Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Einen Schrägstrich in einem SQL-Namen maskieren? Es kann maskiert werden, aber SQL glaubt, dass es sich um mehrere Spalten handelt

In SQL Server können Bezeichner durch eckige Klammern getrennt werden, z. B.

SELECT [gallons/units] ...

In MySQL können Bezeichner durch Backticks getrennt werden, z. B.

SELECT `gallons/units` ...

(HINWEIS:Wenn MySQL SQL_MODE enthält ANSI_QUOTES , dann werden doppelte Anführungszeichen als Trennzeichen für Bezeichner behandelt, ähnlich wie Oracle doppelte Anführungszeichen behandelt; Ohne diese Einstellung werden doppelte Anführungszeichen als Trennzeichen für Zeichenfolgenliterale behandelt. Mit ANSI_QUOTES eingeschlossen SQL_MODE , "gallons/units" wird als Bezeichner (Spaltenname) interpretiert. Ohne ANSI_QUOTES , wird MySQL es als String-Literal sehen, als ob es in einfache Anführungszeichen eingeschlossen wäre.)

FOLLOWUP:

Soweit ein Fehler "operand should contain only 1 column(s)" , das ist normalerweise ein Problem mit der Abfragesemantik, nicht mit Escapezeichen für Bezeichner.

Eine Unterabfrage in der SELECT-Liste kann nur einen einzigen Ausdruck zurückgeben, dies würde beispielsweise einen Fehler auslösen:

Query: SELECT 'foo' , ( SELECT 'fee' AS fee, 'fi' AS fi )

Error Code: 1241
Operand should contain 1 column(s)