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

问题描述 投票:0回答:6

我的一个表格中有一列,周围有方括号,

[Book_Category]
,我想将其重命名为
Book_Category

我尝试了以下查询:

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

但是我收到了这个错误:

消息 15253,级别 11,状态 1,过程 sp_rename,第 105 行语法 解析 SQL 标识符“BookPublisher.[[Book_Category]]”时出错。

有人可以帮助我吗?

sql sql-server sql-server-2008
6个回答
26
投票

您按照创建它的方式进行操作:

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

4
投票

不需要双引号。您只需将右方括号加倍即可,如下所示:

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]"
);

1
投票

这对我有用:

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

0
投票

收到该错误,并想知道为什么。如果您要更改的列名不存在,您可能会收到此确切错误。最好再次确认您是否仍然遇到该错误。


0
投票

这对我有用,我在重命名索引时丢失了表格。

USE database ;  
GO  
EXEC sp_rename N'Schema.Table.old_INDEX', N'new_INDEX', N'INDEX';  
GO  

0
投票

我想在这里分享我的经验。

我执行此查询是为了重命名现有列。

但是,事情就像我试图重命名不同表中的列。

因此,请验证查询是否具有正确的表名.列名。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.