Heim > Datenbank > MySQL-Tutorial > Wie entkomme ich wörtliche Prozentzeichen im NO_BACKSLASH_ESCAPES-Modus von MySQL?

Wie entkomme ich wörtliche Prozentzeichen im NO_BACKSLASH_ESCAPES-Modus von MySQL?

Barbara Streisand
Freigeben: 2024-11-26 01:29:11
Original
499 Leute haben es durchsucht

How to Escape Literal Percentage Signs in MySQL's NO_BACKSLASH_ESCAPES Mode?

Wörtliche Prozentzeichen im MySQL-NO_BACKSLASH_ESCAPES-Modus maskieren

Wenn in MySQL der NO_BACKSLASH_ESCAPES-Modus aktiviert ist, ist das standardmäßige Backslash()-Zeichen-Escapezeichen deaktiviert. Dies kann eine Herausforderung darstellen, wenn versucht wird, literale Prozentzeichen (%) oder Unterstriche (_) in LIKE-Abfragen zu maskieren.

Die herkömmliche Methode, ein Prozentzeichen mit % zu maskieren, wird im NO_BACKSLASH_ESCAPES-Modus wirkungslos. Wie in der bereitgestellten Abfrage veranschaulicht:

SELECT * FROM mytable
WHERE mycol LIKE '5\% off'
Nach dem Login kopieren

...diese Abfrage wird nicht das gewünschte Ergebnis zurückgeben, wenn der NO_BACKSLASH_ESCAPES-Modus aktiviert ist.

Lösung mit Escape-Zeichen

Um ein wörtliches Prozentzeichen im NO_BACKSLASH_ESCAPES-Modus zu maskieren, müssen Sie ein Escape-Zeichen verwenden. Das Escape-Zeichen gibt an, dass das folgende Zeichen wörtlich und nicht als Sonderzeichen interpretiert werden soll.

In MySQL kann das Escape-Zeichen jedes nicht-alphanumerische Zeichen sein. Verwenden wir zum Beispiel das Backslash()-Zeichen als Escape-Zeichen:

select * from mytable
where mycol like '5\% off' escape '\';
Nach dem Login kopieren

In dieser Abfrage gibt der Backslash vor dem Prozentzeichen an, dass das Prozentzeichen als Literalzeichen und nicht als Platzhalter behandelt werden soll .

Alternative Lösung mit unterschiedlichem Escape-Zeichen

Um die Kompatibilität mit beiden sicherzustellen Im NO_BACKSLASH_ESCAPES-Modus und im Standardmodus können Sie ein anderes Zeichen als Escape-Zeichen verwenden. Dadurch kann die Abfrage unabhängig von der Moduseinstellung funktionieren.

Zum Beispiel verwenden wir das Pipe-Zeichen (|) als Escape-Zeichen:

select * from mytable
where mycol like '5|% off' escape '|';
Nach dem Login kopieren

In diesem Fall das Pipe-Zeichen vor dem Prozentzeichen dient als Escape-Zeichen, sodass die Abfrage sowohl im Standardmodus als auch im NO_BACKSLASH_ESCAPES-Modus erfolgreich ausgeführt werden kann.

Das obige ist der detaillierte Inhalt vonWie entkomme ich wörtliche Prozentzeichen im NO_BACKSLASH_ESCAPES-Modus von MySQL?. 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