Heim >Backend-Entwicklung >PHP-Tutorial >Warum benötige ich doppelte Backslashes, wenn ich mit dem LIKE-Operator von MySQL nach einem Schrägstrich suche?
Grundlegendes zu MySQL-Escape-Sequenzen für Suchabfragen
In MySQL gibt es bei der Suche nach einem Schrägstrich () mithilfe der WHERE-Klausel eine Unterschied in der Notwendigkeit von Escape-Sequenzen je nach verwendetem Operator.
WHERE-Klausel mit Gleichheitsoperator (=)
Für den Gleichheitsoperator (=) kein zusätzliches Escape Reihenfolge erforderlich ist. Die folgende Abfrage findet korrekt einen Datensatz mit einem Titel, der einen Schrägstrich enthält:
<code class="sql">SELECT * FROM `titles` WHERE title = 'test\'</code>
Dies liegt daran, dass der Backslash intern von MySQL maskiert wird, bevor der Vergleich ausgeführt wird.
WHERE Klausel mit LIKE-Operator
Bei Verwendung des LIKE-Operators ist jedoch eine zusätzliche Escape-Sequenz für den Backslash erforderlich. Dies liegt daran, dass der LIKE-Operator der C-Escape-Syntax folgt, bei der zwei Backslashes verwendet werden, um einen anderen Backslash zu maskieren. Um mit LIKE nach einem Schrägstrich zu suchen, müssen Sie daher die folgende Syntax verwenden:
<code class="sql">SELECT * FROM `titles` WHERE title LIKE 'test\\'</code>
Standard-Escape-Zeichen
Standardmäßig ist der Backslash () wird als Escape-Zeichen in LIKE-Ausdrücken verwendet. Dies kann durch Angabe eines anderen Escape-Zeichens mithilfe der ESCAPE-Klausel geändert werden. Die folgende Abfrage verwendet beispielsweise das Pipe-Zeichen (|) als Escape-Zeichen:
<code class="sql">SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'</code>
Das obige ist der detaillierte Inhalt vonWarum benötige ich doppelte Backslashes, wenn ich mit dem LIKE-Operator von MySQL nach einem Schrägstrich suche?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!