Groß-/Kleinschreibung in MySQL verstehen
Ihre MySQL-Abfrage mit dem LIKE-Operator scheint Groß-/Kleinschreibung zu berücksichtigen, obwohl Ihre Tabelle als utf8_general_ci codiert ist mit MyISAM-Speicher-Engine. Dieses Verhalten kann rätselhaft sein, und das Verständnis der zugrunde liegenden Ursache ist entscheidend für die Lösung des Problems.
Vergleich von binären und nicht-binären Strings:
Der Schlüssel zum Verständnis Verhalten liegt in der Unterscheidung zwischen binärem und nicht-binärem String-Vergleich. Standardmäßig führt MySQL einen Vergleich nicht-binärer Zeichenfolgen durch, bei dem für die meisten Zeichensätze, einschließlich utf8_general_ci, die Groß-/Kleinschreibung beachtet wird.
Behebung der Groß-/Kleinschreibung beim Binärvergleich:
Um das Problem der Groß-/Kleinschreibung zu beheben, können Sie Ihre Abfrage so ändern, dass sie einen binären Zeichenfolgenvergleich verwendet. Dies wird erreicht, indem dem rechten Operanden des LIKE-Operators das Schlüsselwort BINARY vorangestellt wird. Die korrigierte Abfrage würde wie folgt aussehen:
SELECT concat_ws(title,description) as concatenated HAVING concatenated LIKE BINARY '%SearchTerm%';
Diese Änderung zwingt MySQL dazu, den binären Zeichenfolgenvergleich zu verwenden, bei dem die Groß-/Kleinschreibung nicht beachtet wird.
Alternative Lösung mit COLLATE:
Ein alternativer Ansatz, um einen Zeichenfolgenvergleich ohne Berücksichtigung der Groß- und Kleinschreibung zu erreichen, ist die Verwendung der COLLATE-Klausel. Die COLLATE-Klausel gibt den Zeichensatz und die Sortierregeln an, die auf den Zeichenfolgenvergleich angewendet werden sollen. Durch Angabe der Sortierung utf8_bin können Sie MySQL dazu zwingen, einen Binärzeichenfolgenvergleich zu verwenden. Die Abfrage mit COLLATE wäre:
SELECT .... FROM .... WHERE `concatenated` LIKE '%SearchTerm%' COLLATE utf8_bin;
Das obige ist der detaillierte Inhalt vonWarum beachtet mein MySQL-LIKE-Operator die Groß-/Kleinschreibung, obwohl meine Tabelle utf8_general_ci verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!