MySQL: Diakritische unempfindliche Suche nach spanischen Akzenten
In MySQL-Datenbanken kann die Verwaltung von Wörtern mit spanischen Akzenten bei der Suche eine Herausforderung sein. Dieser Artikel bietet eine Lösung für diakritische Suchvorgänge, die es Ihnen ermöglicht, je nach Wunsch Wörter mit oder ohne Akzente abzurufen.
Abfragen mit Akzenten
Betrachten Sie als Beispiel das Abfrage unten:
$result = mysql_query("SELECT * FROM $lookuptable WHERE disabled = '0' AND name LIKE '%$q%' OR productCode LIKE '%$q%' LIMIT $sugglimit");
Diese Abfrage überprüft sowohl die Felder „name“ als auch „productCode“ auf den Suchbegriff $q. Es werden jedoch nur exakte Übereinstimmungen zurückgegeben, mit Ausnahme von Wörtern mit Akzenten.
Suche ohne Berücksichtigung diakritischer Zeichen
Um eine Suche ohne Berücksichtigung diakritischer Zeichen zu erreichen, können wir Zeichensätze und Sortierungen nutzen. Sortierungen definieren, wie Zeichen verglichen werden, und einige Sortierungen berücksichtigen keine diakritischen Zeichen.
Ändern des Zeichensatzes
Durch Ändern des Zeichensatzes können wir die Sortierung ändern und diakritische Zeichen aktivieren unsensible Suche. Zum Beispiel:
SET NAMES latin1;
Testen der Abfrage
Nachdem wir den Zeichensatz geändert haben, können wir die Abfrage erneut ausführen, um die Ergebnisse zu testen:
mysql> SET NAMES latin1; mysql> SELECT 'lápiz' LIKE 'lapiz'; +-----------------------+ | 'lápiz' LIKE 'lapiz' | +-----------------------+ | 0 | +-----------------------+
Wie Sie sehen können, gibt die Abfrage 0 zurück, obwohl das Wort „'lápiz'“ Akzente enthält. Dies liegt daran, dass der Zeichensatz auf „latin1“ eingestellt ist, bei dem die Groß- und Kleinschreibung beachtet wird.
UTF-8-Sortierung verwenden
Um die Suche ohne Berücksichtigung diakritischer Zeichen zu aktivieren, Wir können die UTF-8-Sortierung verwenden. Unicode Transformation Formats (UTF) sind Zeichenkodierungsschemata, die Multibyte-Zeichen und diakritische Zeichen verarbeiten.
SET NAMES utf8;
Erneutes Ausführen der Abfrage mit dem UTF-8-Zeichensatz:
mysql> SET NAMES utf8; mysql> SELECT 'lápiz' LIKE 'lapiz'; +-----------------------+ | 'lápiz' LIKE 'lapiz' | +-----------------------+ | 1 | +-----------------------+
Jetzt gibt die Abfrage 1 zurück, was darauf hinweist, dass die Suche diakritische Zeichen nicht berücksichtigt.
Zusätzliche Überlegungen
Um die diakritische Suche für jeden Zeichensatz sicherzustellen, können Sie UTF angeben -8-Sortierung explizit:
SELECT 'lápiz' LIKE _utf8'lapiz';
Dies garantiert, dass die UTF-8-Sortierung für den Vergleich verwendet wird, unabhängig vom aktuellen Zeichensatz.
Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL diakritische Suchvorgänge nach spanischen Akzenten durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!