MySQL Diacritic Insensitive Search
Bei der Arbeit mit spanischen Wörtern, die Akzente enthalten, kann es schwierig sein, Suchanfragen unter Berücksichtigung diakritischer Zeichen durchzuführen . Dieser Artikel bietet eine Lösung zum Ausführen diakritischer, unabhängiger Suchvorgänge in einer MySQL-Datenbank unter Verwendung einer Kombination aus Zeichensätzen und Sortierungen.
Das bereitgestellte Beispiel:
$result = mysql_query("SELECT * FROM $lookuptable WHERE disabled = '0' AND name LIKE '%$q%' OR productCode LIKE '%$q%' LIMIT $sugglimit");
berücksichtigt diakritische Unterschiede nicht und kann möglicherweise nicht berücksichtigt werden Schließen Sie Ergebnisse aus, die Wörter wie „lápiz“ enthalten, wenn Sie nach „lapiz“ suchen.
Um diakritische Unempfindlichkeit zu erreichen, kann man den MySQL-Befehl SET NAMES verwenden, um einen bestimmten Zeichensatz und eine Sortierung für die Datenbankverbindung anzugeben. Durch Festlegen des Zeichensatzes auf „latin1“ und der Sortierung auf eine akzentunabhängige Sortierung kann die Abfrage sowohl Wörter mit als auch ohne Akzente finden.
Beispiel:
SET NAMES latin1; SELECT 'lápiz' LIKE 'lapiz';
Diese Abfrage gibt 0 zurück, was darauf hinweist, dass „lápiz“ und „lapiz“ nicht gleich sind.
Durch Wechsel zum utf8-Zeichensatz:
SET NAMES utf8; SELECT 'lápiz' LIKE 'lapiz';
Die Abfrage gibt 1 zurück, was demonstriert dass die Suche jetzt diakritisch ist.
Um explizit anzugeben, dass das Muster mit einer UTF-8-Zeichenfolge übereinstimmen soll, kann man das Präfix _utf8 verwenden:
SET NAMES latin1; SELECT _utf8'lápiz' LIKE _utf8'lapiz';
In diesem Beispiel die Abfrage gibt 1 zurück und bestätigt die Unempfindlichkeit gegenüber diakritischen Zeichen, selbst wenn explizit der Zeichensatz latin1 verwendet wird.
Weiteres Verständnis finden Sie in der MySQL-Dokumentation zur Zeichensatzunterstützung.
Das obige ist der detaillierte Inhalt vonWie führt man in MySQL diakritische Suchvorgänge durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!