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?
Odpowiedzi:
"
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.
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`
W przypadku MS SQL użyj [i]
SELECT [COLUMN], [COLUMN 2] FROM [TABLE]
W przypadku DBASE / DBF użyj [
i]
SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE]
Łą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ć!
'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.