如何重命名名称中带方括号的SQL Server中的内容?

时间:2014-01-16 17:37:58

标签: sql sql-server sql-server-2008

我的一个表格中有一个列,其中有方括号[Book_Category],我想将其重命名为Book_Category

我尝试了以下查询:

sp_rename 'BookPublisher.[[Book_Category]]', 'Book_Category', 'COLUMN'

但是我收到了这个错误:

  

消息15253,级别11,状态1,过程sp_rename,行105语法   解析SQL标识符'BookPublisher。[[Book_Category]]'。

时出错

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:16)

你这样做就像你创建它一样:

exec sp_rename 'BookPublisher."[Book_Category]"', 'Book_Category', 'COLUMN';

这是我做的一个小样本来测试这是否可能。起初我只是假设它是如何误解[]如何在SQL Server中使用,结果我错了,有可能 - 你必须在括号外使用双引号。

begin tran

create table [Foo] ("[i]" int);

exec sp_help 'Foo';

exec sp_rename 'Foo."[i]"', 'i', 'column ';

exec sp_help 'Foo';

rollback tran

答案 1 :(得分:2)

这对我有用:

exec sp_rename ‘[dbo].[TableName].[OldColumnName]’, ‘NewColumnName’

答案 2 :(得分:0)

不需要双引号。你只需加倍关闭方括号,如下:

EXEC sp_rename 'BookPublisher.[[Book_Category]]]', 'Book_Category', 'COLUMN';

您可以使用quotename功能

自行查找
SELECT QuoteName('[Book_Category]');
-- Result: [[Book_Category]]]

这也适用于创建列:

CREATE TABLE dbo.Book (
   [[Book_Category]]] int -- "[Book_Category]"
);

答案 3 :(得分:0)

得到了这个错误,并想知道为什么。如果您要更改的列名不存在,则可以获得此确切错误。不妨加倍确定你是否仍然会遇到这个错误。