2014-01-16 112 views
6

我在其中一個表格中有一列有方括號,[Book_Category],我想將其重命名爲Book_Category如何重命名SQL Server中名稱中包含方括號的內容?

我嘗試以下查詢:

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

,但我得到這個錯誤:

Msg 15253, Level 11, State 1, Procedure sp_rename, Line 105 Syntax error parsing SQL identifier 'BookPublisher.[[Book_Category]]'.

誰能幫助我?

+0

向我們展示一些代碼,請。 – Max

+0

通常:如果對SQL語法或轉義有疑問,請在GUI中執行此操作,然後單擊選項以使其生成腳本。 –

回答

10

你這樣做,你做的創建同樣的方式:

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

得到了這個錯誤,並想知道爲什麼。如果您正在更改的列名不存在,則可以得到此確切錯誤。不妨加倍確保你是否仍然有這個錯誤。

2

這個工作對我來說:

exec sp_rename ‘[dbo].[TableName].[OldColumnName]’, ‘NewColumnName’ 
相關問題