Czy istnieje standard SQL umożliwiający zmianę znaczenia nazwy kolumny? Jeśli nie, co działa z MySQL i SQLite? czy działa również dla SQL Server?
100
"
SQL: 1999 Standard określa , że podwójny cudzysłów ( ") ( cudzysłów ) używana jest do wskazania identyfikatorów.
<delimited identifier> ::= <double quote> <delimited identifier body> <double quote>
Oracle, PostgreSQL, MySQL, MSSQL i SQlite obsługują "
jako separator identyfikatorów.
Nie wszyscy używają "
jako „domyślnych”. Na przykład, musisz uruchomić MySQL w trybie ANSI, a SQL Server obsługuje go tylko wtedy, gdy QUOTED_IDENTIFIER
jest ON
.
Według SQLite ,
'foo'
jest ciągiem SQL"foo"
to identyfikator SQL (kolumna / tabela / itp.)[foo]
jest identyfikatorem w MS SQL`foo`
to identyfikator w MySQLW przypadku nazw kwalifikowanych składnia to: "t"."foo"
lub [t].[foo]
itp.
MySQL obsługuje standardowe "foo", gdy ta ANSI_QUOTES
opcja jest włączona.
'foo'
być interpretowane jako identyfikator, jeśli kontekst nie pozwala na ciąg i"foo"
być interpretowane jako ciąg, jeśli kontekst nie pozwala na identyfikator, chociaż jest uwaga, że to zachowanie może zostać usunięte w przyszłości wersje.WHERE "nonexistent_column" = 0
i sqlite po prostu szczęśliwie wykonał to, udając, że mój"nonexistent_column"
był ciągiem. Pełne zakwalifikowanie nazwy jako"my_table"."nonexistent_column"
wymusza na sqlite bardziej rygorystyczne zachowanie.foo
,"foo"
i'foo'
nie działa dla mnie z MySQL. Wymagało backticks. Co gorsza, MySQL dostarczał bezużyteczne komunikaty o błędach .W przypadku MySQL użyj wstecznych znaczników `.
Na przykład:
SELECT `column`, `column2` FROM `table`
źródło
W przypadku MS SQL użyj [i]
SELECT [COLUMN], [COLUMN 2] FROM [TABLE]
źródło
W przypadku DBASE / DBF użyj
[
i]
SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE]
źródło
Łącząc kilka odpowiedzi:
MS SQL (aka T-SQL), Microsoft Access SQL, DBASE / DBF:
SELECT [COLUMN], [COLUMN2] FROM [TABLE]
MySQL:
SELECT `COLUMN`, `COLUMN2` FROM `TABLE`
SQLite, Oracle, Postgresql:
SELECT "COLUMN", "COLUMN2" FROM "TABLE"
Proszę dodać / edytować!
źródło