在SQL Server中重命名列

56

我尝试了以下代码。虽然没有出现任何错误,但它并没有执行。

SELECT * FROM Categories EXEC sp_rename 'Active', CategoriesActive

你想要实现什么目标呢? 是更改表格中的数值,还是更改表格中某一列的名称,或者是更改多个列的名称? - SWeko
你能列出你有哪些表/列以及你想将它们重命名为什么吗? - Robin Day
3个回答

90
EXEC sp_rename 'Categories.Active', 'CategoriesActive', 'COLUMN'

3
请参阅MSDN有关sp_rename的文档 - Uwe Keim
1
'Categories.Active' 是 'table.old_column_name' 的表示,而 'CategoriesActive' 是新的列名。运行正常。 - Jimmy Salazar

51

适用于MSSQL:

EXEC sp_rename 'TABLENAME.OLD_COLUMNNAME', 'NEW_COLUMNAME', 'COLUMN';

对于MYSQL:使用ALTER TABLE来完成此操作。

ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name

您可以使用CHANGE子句重命名列,将旧列名称改为新列名称,并指定该列的当前定义。例如,要将INTEGER列从a重命名为b,可以执行以下操作:

ALTER TABLE t1 CHANGE a b INTEGER;

http://msdn.microsoft.com/en-us/library/ms190273.aspx似乎没有指示ALTER TABLE语句的CHANGE子句。 - SWeko
抱歉,我误读了问题,我以为他是在提到MySQL而不是MSsql!我会相应地进行编辑。 - Xander
实际上,如果没有“sp_rename”,这个非常特定于数据库的问题就不会是数据库无关的了 :) - SWeko

6

不需要在前面使用那个选择器,语法应该像这样:

EXEC sp_rename 
    @objname = 'Categories.Active', 
    @newname = 'CategoriesActive', 
    @objtype = 'Type_of_your_column'

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