2014-01-16 5 views
6

Ich habe eine Spalte in einer meiner Tabellen, die eckige Klammern hat, [Book_Category], die ich in Book_Category umbenennen möchte.Wie man etwas in SQL Server umbenennt, das eckige Klammern im Namen hat?

habe ich versucht, die folgende Abfrage:

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

aber ich habe diesen Fehler:

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

mir jemand helfen?

+0

Zeigen Sie uns einige Code bitte. – Max

+0

Im Allgemeinen: Wenn Sie Zweifel an der SQL-Syntax oder dem Escaping haben, tun Sie dies in der GUI und klicken Sie auf die Optionen, um ein Skript zu erstellen. –

Antwort

10

Sie tun es die gleiche Art und Weise Sie es schaffen tun:

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

Hier ist eine kleine Probe ich, wenn dies überhaupt möglich war gemacht zu testen. Zuerst habe ich einfach angenommen, dass es ein Missverständnis ist, wie [] in SQL Server verwendet werden kann, stellt sich heraus, dass ich falsch lag, ist es möglich - Sie müssen doppelte Anführungszeichen außerhalb der Klammern verwenden.

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

Doppelte Anführungszeichen sind nicht erforderlich. Sie verdoppeln einfach eckige Klammern schließen oben, etwa so:

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

du herausfinden können, selbst die quotename Funktion:

SELECT QuoteName('[Book_Category]'); 
-- Result: [[Book_Category]]] 

Dies übrigens funktioniert Spalten für die Erstellung auch:

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

Bekam diesen Fehler und fragte mich warum. Sie können diesen genauen Fehler erhalten, wenn der Spaltenname, von dem Sie wechseln, nicht existiert. Stellen Sie auch doppelt sicher, wenn Sie diesen Fehler immer noch erhalten.

2

das funktioniert für mich:

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