sql >> Database teknologi >  >> RDS >> Mysql

Undslipper en skråstreg i et SQL-navn? Det kan undslippes, men SQL mener, at det er flere kolonner

I SQL Server kan identifikatorer afgrænses ved hjælp af firkantede parenteser, f.eks.

SELECT [gallons/units] ...

I MySQL kan identifikatorer afgrænses ved hjælp af backticks, f.eks.

SELECT `gallons/units` ...

(BEMÆRK:Hvis MySQL SQL_MODE inkluderer ANSI_QUOTES , så behandles dobbelte anførselstegn som skilletegn for identifikatorer, på samme måde som Oracle håndterer dobbelte anførselstegn; fraværende indstilling håndteres dobbelte anførselstegn som afgrænsninger for strenge bogstaver. Med ANSI_QUOTES inkluderet SQL_MODE , "gallons/units" vil blive fortolket som en identifikator (kolonnenavn). Uden ANSI_QUOTES , vil MySQL se den som en streng bogstavelig, som om den var omgivet af enkelte anførselstegn.)

OPFØLGNING:

For så vidt angår fejlen "operand should contain only 1 column(s)" , det er normalt et problem med forespørgselssemantik, ikke et problem med escape-identifikatorer.

En underforespørgsel i SELECT-listen kan kun returnere et enkelt udtryk, for eksempel ville dette give en fejl:

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

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


  1. Laravel SQLSTATE[22007]:Ugyldigt datetime-format:1292 Forkert datetime-værdi:'2019-03-10 02:00:39' for kolonnen 'updated_at' (sommertid?)

  2. Importerer CSV med kommaer i strengværdier

  3. MySQL:Hvordan beregner man uger ud fra en bestemt dato?

  4. Brug af SQL Server 2008 og SQL Server 2005 og dato og klokkeslæt