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

Perché è necessario eseguire un doppio escape (usare 4 \) per trovare una barra rovesciata ( \ ) in SQL puro?

Esci prima per la sintassi della stringa, poi per LIKE sintassi.

In LIKE caratteri % e _ hanno un significato speciale, quindi se vuoi cercare il letterale % , devi usare \% e se vuoi cercare il valore letterale \% devi evitare la barra rovesciata come in \\% .

Nella sintassi della stringa " ovviamente ha un significato speciale, quindi se vuoi includere virgolette nella stringa devi evadere come \" e per includere il letterale \" nella stringa devi evitare la barra rovesciata come in \\" .

Quindi in entrambe le sintassi devi usare l'escape \ .

Se non vuoi usare \ per sfuggire al pattern LIKE , puoi usare la parola chiave ESCAPE. Ad esempio:

...  where test LIKE "a\\b%" ESCAPE '|';

In questo modo, dovrai scrivere |% , |_ o || per sfuggire a questi caratteri speciali.