2010-05-25 10 views

risposta

11

Per MySQL, utilizzare ticks `.

Per esempio:

SELECT `column`, `column2` FROM `table` 
15

Per MS SQL usare [e]

SELECT [COLUMN], [COLUMN 2] FROM [TABLE] 
+1

è possibile avere spazi nei nomi delle colonne con MS SQL!?! –

+2

puoi! Non lo farei, però. – JMP

+1

Sì, è possibile avere spazi o parole riservate come nomi di entità in MSSQL. Hai solo bisogno di [] loro. – BoltBait

64

Lo SQL-99 standard di specifies che doppie virgolette (") viene utilizzato per delimitare gli identificatori

. Oracle, PostgreSQL, MySQL, MSSQL e SQlite supportano tutti "come il delimitatore dell'identificatore (sebbene non tutti lo utilizzino" come "predefinito" - per esempio, devi eseguire MySQL in ANSI mode e SQL Server supporta solo quando QUOTED_IDENTIFIER è ON.)

49

Secondo SQLite,

  • 'foo' è una stringa SQL
  • "foo" è un identificatore SQL (colonna/tabella/etc)
  • [foo] è un identificativo in MS SQL
  • `foo` è un identificativo in MySQL

Per i nomi qualificati, la sintassi è: "t"."foo" o [t].[foo], ecc

MySQL supporta il "foo" standard quando l'opzione ANSI_QUOTES è abilitata.

+3

Si noti che SQLite consente a ''foo'' di essere interpretato come identificativo se il contesto non consente una stringa, e' "foo" 'deve essere interpretato come una stringa se il contesto non consente un identificatore, anche se è una nota che questo comportamento può essere rimosso nelle versioni future. – thomasrutter

+0

Quindi, come si fa a "t". *? – Loenix

+1

@thomasrutter Sì, sono stato completamente morso da questo comportamento ... Ho provato a usare 'WHERE" nonexistent_column "= 0' e sqlite l'ho eseguito felicemente fingendo che il mio' "nonexistent_column" 'fosse una stringa. Completamente qualificando il nome come "" my_table "." Nonexistent_column "' forza lo sqlite a comportarsi in modo più rigoroso. – Rufflewind

1

Per DBASE uso/DBF [ e ]

SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE] 
Problemi correlati