小编典典

重命名所有表中的列-SQL

sql

我需要重命名数据库中所有表中的列。因此必须在所有表中将“ OldColumn”列重命名为“ NewColumn”

我可以使用此查询获取具有此列的表的列表:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME= <Column Name>

但是,如何在所有表中重命名它却尽可能简单,而不必编写游标呢?


阅读 223

收藏
2021-04-14

共1个答案

小编典典

当然,您不需要为此使用光标。您可以使用sys.columns和sys.objects生成动态sql。然后简单地执行它。一旦您对动态sql感到满意,就可以随意取消最后一行的注释。

-—警告!!!! ----如果更改列名,则视图,存储过程,函数等都将被破坏。

declare @CurrentColumnName sysname = 'asdf'
    , @NewColumnName sysname = 'qwer'
    , @SQL nvarchar(MAX) = ''

select @SQL = @SQL + 'EXEC sp_rename ''' + o.name + '.' + c.name + ''', ''' + @NewColumnName + ''', ''COLUMN'';'
from sys.columns c
join sys.objects o on o.object_id = c.object_id
where c.name = @CurrentColumnName

select @SQL

--exec sp_executesql @sql
2021-04-14