1

我发现这个有用的查询可以重命名我的所有表、索引和约束,但我只是发现它没有重命名列。

SELECT 'exec sp_rename ' + '''' + NAME + '''' + ', ' + '''' + replace(NAME, 'Tb', 'Tabela') + ''''
FROM sysObjects
WHERE
NAME LIKE 'Tb%'

我知道有 syscolumns,但我不确定在这种情况下如何使用。

问题:我怎样才能获得与此查询相同的结果,但对于列而不是表?

感谢您在这方面的帮助。我正在使用 SQL Server 2012。谢谢。

4

1 回答 1

2

你必须做更多的工作:

SELECT 'exec sp_rename ' + '''' + QUOTENAME(s.name) + '.' + QUOTENAME(o.name) + '.' + QUOTENAME(c.name) + '''' + ', ' + '''' + replace(c.name, 'Col', 'Column') + ''', ''COLUMN'''
FROM sys.columns c
    INNER JOIN sys.objects o ON c.object_id = o.object_id
    INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE c.name LIKE 'Col%'

由于您要重命名列,因此必须将第三个参数指定为sp_renameis COLUMN。您还必须以 的形式构造三部分名称[schema].[table name].[current column name]以指向正确的列。

于 2017-08-16T17:10:07.107 回答