2009-05-30 6 views
16

Ich brauche eine Tabelle, die Schlüssel-Wert-Paare speichert, so habe ich eine mit einer Spalte namens "Key" und eine Spalte namens "Value" erstellt.Wie INSERT in eine Spalte, deren Name ist ein SQL-Schlüsselwort

Dies schlägt fehl:

insert into mykeyvalues (Key,Value) values ('FooKey', 'FooValue') 

"Falsche Syntax nahe dem Schlüsselwort 'Schlüssel'."

Vielleicht sollte ich es nicht "Schlüssel" nennen, aber ich frage mich nur, ob es möglich ist, mit einer Spalte zu arbeiten, deren Name ein sql-Schlüsselwort ist?

Danke

Antwort

27

Sie können Spaltennamen mit Klammern [] umgeben. Deshalb:

insert into mykeyvalues ([Key],[Value]) values ('FooKey', 'FooValue') 
+0

Vielen Dank für Ihre Antwort – Kurt

+1

Was wäre, wenn Sie den Wert "Schlüssel" von Java bekommen würden und Klammern nicht manuell setzen könnten, was würden Sie tun? – CodeKingPlusPlus

13

verwenden entweder Backticks (`) oder doppelte Anführungszeichen (") um die Kennungen in der Abfrage. Zum Beispiel:

INSERT INTO mykeyvalues ("Key", "Value") values ('FooKey', 'FooValue') 

Aber auf lange Sicht, reduziert dies nur Portabilität. Es ist einfacher, einen anderen Namen zu verwenden

+0

Eigentlich glaube ich das Ihr Beispiel ist ANSI SQL standardkonform. – RBarryYoung

+0

Ja, aber reale DBs respektieren oft nicht ANSI - z.B. man will doppelte Anführungszeichen, ein anderer will Klammern, noch ein anderer will Backticks, etc., ein Kopfschmerz nach dem anderen :-( –

+0

Danke. Ich bin mir nicht sicher, ob Johns Antwort oder diese die akzeptierte Antwort sein sollte Wie ein Charme – Kurt

Verwandte Themen