2017-08-16 90 views
0

我发现这个有用的查询来重命名我所有的表,索引和约束,但我只是想通了它没有重命名列。使用SQL Server 2012批量重命名列名称

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

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

问题:如何获得与此查询相同的结果,但对于列而不是表?

我感谢你的帮助。我正在使用SQL Server 2012.谢谢。

+0

我的意思是,你只是选择数据,在这种情况下,应该给你所有需要实际运行的查询。您必须复制结果,将它们粘贴到窗口中,然后运行它 – Lamak

+0

问题是什么? – Nisarg

+0

问题是...我如何得到这个查询的相同结果,但是对于列而不是表。 – Richard

回答

0

你必须做一些更多的工作:

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_renameCOLUMN。您还必须以[schema].[table name].[current column name]的形式构造三个零件名称,以指向正确的列。

+0

完美工作!非常感谢,nejcs! – Richard

+0

我很高兴它的工作。请批准这个答案并考虑提高它。 – nejcs