我的一个表格中有一列,周围有方括号,
[Book_Category]
,我想将其重命名为Book_Category
。
我尝试了以下查询:
sp_rename 'BookPublisher.[[Book_Category]]', 'Book_Category', 'COLUMN'
但是我收到了这个错误:
消息 15253,级别 11,状态 1,过程 sp_rename,第 105 行语法 解析 SQL 标识符“BookPublisher.[[Book_Category]]”时出错。
有人可以帮助我吗?
您按照创建它的方式进行操作:
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
不需要双引号。您只需将右方括号加倍即可,如下所示:
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]"
);
收到该错误,并想知道为什么。如果您要更改的列名不存在,您可能会收到此确切错误。最好再次确认您是否仍然遇到该错误。
这对我有用:
exec sp_rename ‘[dbo].[TableName].[OldColumnName]’, ‘NewColumnName’
这对我有用,我在重命名索引时丢失了表格。
USE database ;
GO
EXEC sp_rename N'Schema.Table.old_INDEX', N'new_INDEX', N'INDEX';
GO