Mysql
 sql >> Base de données >  >> RDS >> Mysql

Échapper à une barre oblique dans un nom SQL ? Il peut être échappé, mais SQL pense qu'il s'agit de plusieurs colonnes

Dans SQL Server, les identifiants peuvent être délimités à l'aide de crochets, par exemple

SELECT [gallons/units] ...

Dans MySQL, les identifiants peuvent être délimités à l'aide de backticks, par exemple

SELECT `gallons/units` ...

(REMARQUE :Si MySQL SQL_MODE inclut ANSI_QUOTES , les guillemets doubles sont traités comme des délimiteurs pour les identificateurs, de la même manière qu'Oracle gère les guillemets doubles ; en l'absence de ce paramètre, les guillemets doubles sont traités comme des délimiteurs pour les littéraux de chaîne. Avec ANSI_QUOTES inclus SQL_MODE , "gallons/units" sera interprété comme un identifiant (nom de colonne). Sans ANSI_QUOTES , MySQL le verra comme un littéral de chaîne, comme s'il était entouré de guillemets simples.)

SUIVI :

En ce qui concerne une erreur "operand should contain only 1 column(s)" , il s'agit généralement d'un problème de sémantique de requête, et non d'un problème d'échappement des identifiants.

Une sous-requête dans la liste SELECT ne peut renvoyer qu'une seule expression, par exemple, cela renverrait une erreur :

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

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