2017-08-16 63 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