Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum wird bei MySQL-LIKE-Abfragen bei der utf8_general_ci-Kodierung die Groß-/Kleinschreibung beachtet?

Susan Sarandon
Freigeben: 2024-11-09 18:05:02
Original
387 Leute haben es durchsucht

Why are MySQL LIKE Queries Case-Sensitive with utf8_general_ci Encoding?

Groß-/Kleinschreibung in MySQL-LIKE-Abfragen

Problem:

Betrachten Sie die folgende MySQL-Abfrage:

SELECT concat_ws(title, description) as concatenated
HAVING concatenated LIKE '%SearchTerm%';
Nach dem Login kopieren

Trotz der Verwendung des LIKE-Operators scheint bei der Suche die Groß-/Kleinschreibung zu berücksichtigen wenn die Tabellenkodierung utf8_general_ci mit einer MyISAM-Speicher-Engine ist.

Erklärung:

Die MyISAM-Speicher-Engine verwendet Vergleiche ohne Berücksichtigung der Groß-/Kleinschreibung für Zeichenfolgen, die in der utf8_general_ci-Kodierung gespeichert sind. Der LIKE-Operator führt jedoch standardmäßig Vergleiche unter Berücksichtigung der Groß- und Kleinschreibung durch.

Optimale Lösung:

Um Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, verwenden Sie das Schlüsselwort BINARY wie folgt:

SELECT ....
FROM ....
WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Nach dem Login kopieren

Bei Zeichenfolgenvergleichen wird die Groß-/Kleinschreibung beachtet, wenn einer der Operanden eine Binärdatei ist string.

Alternative Lösung:

Alternativ können Sie die COLLATE-Anweisung verwenden, um eine gebietsschemaspezifische Sortierung anzugeben:

SELECT ....
FROM ....
WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
Nach dem Login kopieren

Dieser Ansatz ermöglicht Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung unter Beibehaltung der ursprünglichen Zeichenkodierung.

Das obige ist der detaillierte Inhalt vonWarum wird bei MySQL-LIKE-Abfragen bei der utf8_general_ci-Kodierung die Groß-/Kleinschreibung beachtet?. 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