web-dev-qa-db-fra.com

Comment échapper au signe de pourcentage littéral lorsque l'option NO_BACKSLASH_ESCAPES est activée?

Mon entreprise exécute MySQL en mode NO_BACKSLASH_ESCAPES. Comment puis-je échapper à un littéral % ou _ dans une requête LIKE dans ce mode? La méthode standard est \%, mais cela ne fonctionne pas dans ce mode.

Exemple: une colonne a les valeurs suivantes: 5% off, 50% off. La requête suivante fonctionne en mode standard mais pas en mode NO_BACKSLASH_ESCAPES:

SELECT * FROM mytable
WHERE mycol LIKE '5\% off'
46
Kip

tu as besoin de t'échapper

select * from mytable
where mycol like '5\% off' escape '\';

Pour une version qui fonctionne indépendamment du mode NO_BACKSLASH_ESCAPES, vous pouvez utiliser un caractère différent, comme pipe:

select * from mytable
where mycol like '5|% off' escape '|';
58
ajreal