In SQL Server, gli identificatori possono essere delimitati utilizzando parentesi quadre, ad esempio
SELECT [gallons/units] ...
In MySQL, gli identificatori possono essere delimitati usando i backtick, ad es.
SELECT `gallons/units` ...
(NOTA:se MySQL SQL_MODE
include ANSI_QUOTES
, quindi le virgolette doppie vengono trattate come delimitatori per gli identificatori, in modo simile al modo in cui Oracle gestisce le virgolette doppie; in assenza di tale impostazione, le virgolette doppie vengono gestite come delimitatori per le stringhe letterali. Con ANSI_QUOTES
incluso SQL_MODE
, "gallons/units"
sarà interpretato come un identificatore (nome della colonna). Senza ANSI_QUOTES
, MySQL lo vedrà come una stringa letterale, come se fosse racchiuso tra virgolette singole.)
SEGUITO:
Per quanto riguarda un errore "operand should contain only 1 column(s)"
, di solito è un problema con la semantica della query, non con l'escape degli identificatori.
Una sottoquery nell'elenco SELECT può restituire solo una singola espressione, ad esempio, questo genererebbe un errore:
Query: SELECT 'foo' , ( SELECT 'fee' AS fee, 'fi' AS fi )
Error Code: 1241
Operand should contain 1 column(s)