Groß-/Kleinschreibung in MySQL-LIKE-Abfragen
Problem:
Betrachten Sie die folgende MySQL-Abfrage:
SELECT concat_ws(title, description) as concatenated HAVING concatenated LIKE '%SearchTerm%';
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%';
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;
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!