将SQL Server中的列从任何名称重命名为新名称

时间:2013-06-07 21:23:25

标签: sql

我需要知道如何从任何名称重命名SQL表列。如果我知道当前名称,我可以使用以下代码。

    sp_RENAME 'TableName.[OldColumnName]' , '[NewColumnName]', 'COLUMN'

但如果我不知道列名,我怎样才能将其更改为新名称?提前谢谢。

2 个答案:

答案 0 :(得分:3)

如果您知道列号(序号位置),则可以通过运行以下查询来获取列名:

SELECT COLUMN_NAME FROM Information_Schema.Columns
WHERE TABLE_NAME = '<TableName>' AND ORDINAL_POSITION = <ColumnNumber> 

这是一个可能的使用示例

DECLARE @ColName nvarchar(128)

SELECT @ColName = COLUMN_NAME FROM Information_Schema.Columns
WHERE TABLE_NAME = 'TableName' AND ORDINAL_POSITION = 6

SET @ColName = 'TableName.[' + @ColName + ']'

sp_RENAME @ColName , '[NewColumnName]', 'COLUMN'

答案 1 :(得分:0)

但是,要非常小心,因为更改表可能会导致不可预见的后果,如果存储过程,触发器等按名称显式调用列,它们将无法正常运行。