Heim >Datenbank >MySQL-Tutorial >Wie kann ich akzentunabhängige String-Vergleiche in PostgreSQL erreichen?

Wie kann ich akzentunabhängige String-Vergleiche in PostgreSQL erreichen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-20 12:27:09165Durchsuche

How Can I Achieve Accent-Insensitive String Comparisons in PostgreSQL?

Unterstützt PostgreSQL die Sortierung „Akzente ignorieren“?

PostgreSQL selbst unterstützt die Sortierung „Akzente ignorieren“ nicht nativ, wie dies bei Microsoft SQL Server der Fall ist. Es stehen jedoch zwei Alternativen zur Verfügung:

Verwenden Sie das Unaccent-Modul

Die Postgres-Community hat das Unaccent-Modul erstellt, das Funktionen zum Entfernen von Akzenten aus Zeichenfolgen bereitstellt. Dies kann verwendet werden, um benutzerdefinierte „Akzente ignorieren“-Sortierungen zu erstellen.

<code class="language-sql">CREATE EXTENSION unaccent;
CREATE COLLATION ignore_accent (locale='en_US', provider='unaccent');</code>

Verwenden Sie die ICU-Sortierung (PostgreSQL 12 oder höher)

PostgreSQL 12 führt Unterstützung für ICU-Sortierungen ein, die Kombinationen und Sortierungen ohne Berücksichtigung der Groß- und Kleinschreibung und des Akzents ermöglicht. ICU-Sortierungen weisen jedoch Leistungseinbußen auf und können bei bestimmten Vorgängen wie dem Mustervergleich nicht verwendet werden.

<code class="language-sql">CREATE COLLATION ignore_accent (provider = icu, locale = 'und-u-ks-level1-kc-true', deterministic = false);</code>

Best Practices

Für den allgemeinen Gebrauch ist das Nicht-Akzent-Modul effizienter und wird für die Erstellung von Abfragen zum „Ignorieren von Akzenten“ empfohlen. Es ermöglicht das Inlining von Funktionen und die Indizierung von Ausdrücken.

Das obige ist der detaillierte Inhalt vonWie kann ich akzentunabhängige String-Vergleiche in PostgreSQL erreichen?. 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