Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL diakritische Suchvorgänge nach spanischen Akzenten durchführen?

Wie kann ich in MySQL diakritische Suchvorgänge nach spanischen Akzenten durchführen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 02:28:30448Durchsuche

How can I perform diacritic insensitive searches for Spanish accents in MySQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn