在SQL Server 2008中更改列名

10

如何将预定义的列名更改为新名称。

eg: Column name is "Accounts"
I want to change it to "A/c"

修改emp表中的Accounts列...[接下来该怎么做]


3
您在文档中不理解的内容是什么? - Oded
6个回答

20

用于重命名任何列的脚本:

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

(注意在第二个参数中 不要 使用转义字符,令人惊讶。)

重命名任何对象(表、存储过程等)的脚本:

sp_RENAME '[OldTableName]' , 'NewTableName'

点击此处查看更多信息。


是否不需要使用 ALTER TABLE 语句? - techie
@techie - 你有跟着链接吗?它说了什么? - Oded
是的,我在发布这里之前看到了那个链接,但这是我第一次在SQL Server环境中工作,所以对这里的事情有点困惑。 - techie
1
实际上,这让我非常惊讶 - sp_RENAME 'TableName.[OldColumnName]' , '[NewColumnName]', 'COLUMN' 将列命名为 [NewColumnName] 而不是 NewColumnName。在第二个参数中不使用 [] 转义符。我已经修复了答案。 - T.J. Crowder
如果您添加了 [],请参见 https://dev59.com/1mEi5IYBdhLWcg3wjs1j#21169214。 - Chad Hedgcock

13

您需要使用 sp_rename 命令,或使用 Management Studio 进行可视化操作 - 确保在空闲期间进行操作,并确保先在预生产环境中进行测试!

顺便提一下,我建议避免使用 A/C - 斜杠符号具有特殊的除法含义。

关于 sp_rename 的文档可以在此处查看,示例 B 最适合。 http://msdn.microsoft.com/zh-cn/library/ms188351.aspx


在这段代码中,t1是表名,Accounts是列名。运行这段代码可以将该列名更改为Acc。请确保您先在非生产环境中进行测试,并备份数据! 执行以下代码:EXEC sp_rename 't1.Accounts', 'Acc', 'COLUMN'; - Peter Schofield
这个“COLUMN”关键字在末尾有什么用途? - techie
2
这是一个存储过程的参数(该命令),它告诉它更改列名,而不是例如更改表名。 - Peter Schofield

1
sp_rename 'table_name.accounts', 'A/C', 'column'

这个查询将解决你的问题。

0

您可以使用 sp_rename 如下:

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

由于你的代码是这样的:

sp_RENAME 'table.Accounts','Acc','COLUMN'

0

重命名任何列名的命令:

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

在结尾处不使用第三个参数'Column'也可以正常工作。


0
这是 sp_rename 的代码。
sp_RENAME 'emp.Accounts' , 'Acc'

我使用了类似的东西,而且有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接