2009-05-30 20 views
16

Ho bisogno di una tabella che memorizzi le coppie chiave-valore, quindi ne ho creata una con una colonna chiamata "Chiave" e una colonna denominata "Valore".Come INSERT a una colonna il cui nome è una parola chiave sql

Questo fallisce:

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

"Sintassi non corretta in prossimità della parola chiave 'chiave'."

Forse non dovrei chiamarlo "Chiave", ma mi chiedo solo se è possibile lavorare con una colonna il cui nome è una parola chiave sql?

Grazie

risposta

27

È possibile circondare i nomi di colonna come quella con [] parentesi. Pertanto:

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

Grazie per la tua risposta! – Kurt

+1

E se avessi ottenuto il valore "chiave" da Java e non avresti potuto mettere manualmente le parentesi intorno. Quindi cosa faresti? – CodeKingPlusPlus

13

utilizzare sia apici inversi (`) o doppie virgolette (") attorno ai identificatori nella query. Ad esempio:

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

Ma nel lungo periodo, questo solo riduce la portabilità. È più facile usare un nome diverso

+0

In realtà, credo che il tuo esempio è conforme allo standard ANSI SQL – RBarryYoung

+0

Sì, ma i DB di vita reale spesso non rispettano l'ANSI, ad es. uno vuole virgolette doppie, un altro vuole parentesi, l'altro vuole apici inversi, ecc. ecc. - un mal di testa dopo l'altro :-( –

+0

Grazie. Non sono sicuro che la risposta di John o questa dovrebbe essere la risposta accettata. come un fascino – Kurt

Problemi correlati