Warum muss ich Schrägstriche in den WHERE- und LIKE-Klauseln von MySQL anders maskieren?

Barbara Streisand
Freigeben: 2024-11-01 20:10:02
Original
407 Leute haben es durchsucht

Why Do I Need to Escape Slashes Differently in MySQL's WHERE and LIKE Clauses?

Warum Slash () anders für die WHERE- und LIKE-Klauseln von MySQL maskieren?

In MySQL kann die Behandlung von Slashes () in Abfragen anders sein verwirrend sein. Betrachten Sie die folgende Abfrage:

<code class="sql">(SELECT * FROM `titles` where title = 'test\')
UNION ALL
(SELECT * FROM `titles` where title LIKE 'test\\')</code>
Nach dem Login kopieren

Sie könnten erwarten, dass die zweite Abfrage, die die LIKE-Klausel verwendet, einen zusätzlichen Backslash erfordern würde, um den ursprünglichen Schrägstrich in „test“ zu maskieren. Die Ergebnisse zeigen jedoch, dass beide Abfragen erfolgreich dieselbe Zeile zurückgeben, mit „test“ als Titel.

Die Diskrepanz entsteht durch das Verhalten von MySQL mit Escape-Zeichen in WHERE- und LIKE-Klauseln. In der WHERE-Klausel dient der Backslash als Escape-Zeichen und verhindert, dass Sonderzeichen wörtlich interpretiert werden. Im Gegensatz dazu ist in der LIKE-Klausel der Backslash das Standard-Escape-Zeichen, mit dem Sie andere Zeichen innerhalb des Suchmusters maskieren können.

Wie im MySQL-Handbuch für LIKE angegeben:

Alternativ können Sie ein anderes Escape-Zeichen für LIKE angeben, wie in der folgenden geänderten Abfrage gezeigt:

Indem Sie den Backslash durch ein Pipe-Zeichen als Escape-Zeichen ersetzen, können Sie genau nach dem wörtlichen „Test“ suchen, ohne den Backslash zu verdoppeln.
<code class="sql">SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum muss ich Schrägstriche in den WHERE- und LIKE-Klauseln von MySQL anders maskieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage