Groß-/Kleinschreibung bei LIKE in MySQL
Beim Durchführen einer LIKE-Suche in MySQL mit der Abfrage „SELECT concat_ws(title,description) as concatenated NACH der Verkettung von LIKE '%SearchTerm%';" fällt möglicherweise auf, dass bei der Suche die Groß-/Kleinschreibung beachtet wird, obwohl die Tabelle mit der Sortierung utf8_general_ci und der MyISAM-Speicher-Engine codiert ist.
Der Grund für dieses Verhalten ist folgender Der LIKE-Operator führt Vergleiche unter Berücksichtigung der Groß-/Kleinschreibung durch, wenn einer der Operanden eine Binärzeichenfolge ist. In diesem Fall handelt es sich bei dem „verketteten“ Feld um eine Binärzeichenfolge, wodurch bei der Suche die Groß-/Kleinschreibung berücksichtigt wird.
Um dieses Problem zu beheben und bei der Suche die Groß-/Kleinschreibung nicht zu berücksichtigen, wird empfohlen, das Schlüsselwort BINARY mit LIKE zu verwenden Operator:
SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Dadurch wird sichergestellt, dass der Zeichenfolgenvergleich binär durchgeführt wird, wobei alle Groß-/Kleinschreibungsunterschiede ignoriert werden.
Alternativ kann das Schlüsselwort COLLATE zusammen mit der Sortierung utf8_bin verwendet werden, um das zu erstellen Suche ohne Berücksichtigung der Groß-/Kleinschreibung:
SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
Beide Methoden ändern effektiv das Suchverhalten, sodass die Groß-/Kleinschreibung nicht berücksichtigt wird, während die Leistungsvorteile der Sortierung utf8_general_ci erhalten bleiben.
Das obige ist der detaillierte Inhalt vonWarum beachtet der LIKE-Operator von MySQL die Groß-/Kleinschreibung, wenn eine Binärzeichenfolge verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!