Heim > Datenbank > MySQL-Tutorial > Warum erfordern die WHERE- und LIKE-Klauseln von MySQL unterschiedliche Backslash-Escapezeichen?

Warum erfordern die WHERE- und LIKE-Klauseln von MySQL unterschiedliche Backslash-Escapezeichen?

Patricia Arquette
Freigeben: 2025-01-06 20:34:41
Original
661 Leute haben es durchsucht

Why Do MySQL's WHERE and LIKE Clauses Require Different Backslash Escaping?

Backslashes in MySQL maskieren: Verwendung in WHERE- und LIKE-Klauseln

Betrachten Sie die folgende Abfrage, die nach einem Titel sucht, der einen Backslash enthält:

(SELECT * FROM `titles` WHERE title = 'test\')
UNION ALL
(SELECT * FROM `titles` WHERE title LIKE 'test\\')
Nach dem Login kopieren

Die Ausgabe zeigt, dass der Backslash in der WHERE-Klausel nicht maskiert ist. Für die LIKE-Klausel ist jedoch ein zusätzlicher Backslash erforderlich.

Warum der Unterschied?

In MySQL fungieren Backslashes () standardmäßig als Escape-Zeichen in LIKE. Laut MySQL-Handbuch für LIKE:

"Da MySQL in Strings die C-Escape-Syntax verwendet ... müssen Sie alle '' verdoppeln, die Sie in LIKE-Strings verwenden. Um beispielsweise nach 'n' zu suchen, geben Sie Folgendes an Geben Sie es als „n“ an. Um nach „“ zu suchen, geben Sie es als „\“ an. Dies liegt daran, dass die Backslashes einmal vom Parser entfernt werden und dann noch einmal, wenn der Musterabgleich erfolgt, so dass ein einzelner Backslash übrig bleibt, der abgeglichen werden muss gegen.“

Backslashes mit Escapezeichen versehen

MySQL bietet jedoch die Möglichkeit, das Escape-Zeichen mithilfe des Schlüsselworts ESCAPE zu ändern. Die folgende Abfrage würde beispielsweise ein Pipe-Zeichen (|) als Escape-Zeichen verwenden:

SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
Nach dem Login kopieren

Bei dieser Abfrage ist nur ein einziger Backslash in der LIKE-Klausel erforderlich, da das Pipe-Zeichen verwendet wird für die Flucht.

Das obige ist der detaillierte Inhalt vonWarum erfordern die WHERE- und LIKE-Klauseln von MySQL unterschiedliche Backslash-Escapezeichen?. 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