Heim >Datenbank >MySQL-Tutorial >Warum unterscheidet sich das Escapen von Backslashes zwischen den WHERE- und LIKE-Klauseln von MySQL?
Escape-Zeichen in MySQL-WHERE- und LIKE-Klauseln
Wenn Sie in MySQL nach Sonderzeichen wie dem Backslash () in einer WHERE-Klausel suchen, Es ist keine zusätzliche Flucht erforderlich. Für LIKE-Klauseln ist jedoch ein doppelter Backslash () erforderlich. Dies liegt an der standardmäßigen Verwendung von MySQL als Escape-Zeichen in LIKE-Anweisungen.
WHY und WIE Escape-Zeichen in WHERE und LIKE funktionieren
In WHERE-Klauseln, MySQL vergleicht den angegebenen Wert ohne weitere Verarbeitung direkt mit dem Spaltenwert. Daher reicht ein einzelner Backslash () aus, um mit dem Backslash-Zeichen in der Spalte übereinzustimmen.
In LIKE-Klauseln entfernt MySQL zunächst alle Backslashes aus dem angegebenen Muster. Anschließend werden während des Mustervergleichs die verbleibenden Backslashes entfernt. Dieser doppelte Entfernungsprozess erfordert einen doppelten Backslash (), um das Backslash-Zeichen zu maskieren und eine Übereinstimmung in der LIKE-Klausel zu ermöglichen.
Beispiel
Die bereitgestellte SQL-Abfrage veranschaulicht der Unterschied:
(SELECT * FROM `titles` WHERE title = 'test\') UNION ALL (SELECT * FROM `titles` WHERE title LIKE 'test\\')
Ausgabe:
| ID | TITLE | -------------- | 1 | test\ | | 1 | test\ |
Der doppelte Backslash () ist in der LIKE-Klausel erforderlich, um mit dem Backslash im Spaltenwert übereinzustimmen.
Ändern des Escape-Zeichens
Bei Bedarf können Sie das verwendete Escape-Zeichen ändern LIKE-Anweisungen durch Angabe des gewünschten Zeichens nach dem ESCAPE-Schlüsselwort:
SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
In diesem Fall wird das Pipe-Zeichen (|) als Escape-Zeichen verwendet, sodass a einzelner Backslash (), der in der LIKE-Klausel abgeglichen werden soll.
Das obige ist der detaillierte Inhalt vonWarum unterscheidet sich das Escapen von Backslashes zwischen den WHERE- und LIKE-Klauseln von MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!