使用SQL Server 2012批量重命名列名称
问题描述:
我发现这个有用的查询来重命名我所有的表,索引和约束,但我只是想通了它没有重命名列。使用SQL Server 2012批量重命名列名称
SELECT 'exec sp_rename ' + '''' + NAME + '''' + ', ' + '''' + replace(NAME, 'Tb', 'Tabela') + ''''
FROM sysObjects
WHERE
NAME LIKE 'Tb%'
我知道有syscolumns,但我不知道如何在这种情况下使用。
问题:如何获得与此查询相同的结果,但对于列而不是表?
我感谢你的帮助。我正在使用SQL Server 2012.谢谢。
答
你必须做一些更多的工作:
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_rename
是COLUMN
。您还必须以[schema].[table name].[current column name]
的形式构造三个零件名称,以指向正确的列。
我的意思是,你只是选择数据,在这种情况下,应该给你所有需要实际运行的查询。您必须复制结果,将它们粘贴到窗口中,然后运行它 – Lamak
问题是什么? – Nisarg
问题是...我如何得到这个查询的相同结果,但是对于列而不是表。 – Richard