Heim > Datenbank > MySQL-Tutorial > Wie kann ich in PostgreSQL akzentunabhängige Abfragen durchführen?

Wie kann ich in PostgreSQL akzentunabhängige Abfragen durchführen?

DDD
Freigeben: 2025-01-20 12:17:39
Original
726 Leute haben es durchsucht

How Can I Perform Accent-Insensitive Queries in PostgreSQL?

Unterstützt PostgreSQL eine akzentunabhängige Sortierung?

Microsoft SQL Server bietet eine „akzentunabhängige“ Sortierung, die es ermöglicht, eine Abfrage wie SELECT * FROM users WHERE name LIKE 'João' auszuführen, um Zeilen mit dem Namen „Joao“ abzurufen.

Lösung für PostgreSQL

PostgreSQL stellt das Unaccent-Modul bereit, das diakritische Zeichen aus Zeichenfolgen entfernt. Um es zu verwenden, installieren Sie die Erweiterung und verwenden Sie die Funktion unaccent():

<code class="language-sql">SELECT * FROM users WHERE unaccent(name) = unaccent('João');</code>
Nach dem Login kopieren

Indexoptimierung

Um Abfragen zu beschleunigen, erstellen Sie einen Ausdrucksindex:

<code class="language-sql">CREATE INDEX users_unaccent_name_idx ON users(unaccent(name));</code>
Nach dem Login kopieren

Denken Sie aus Sicherheitsgründen daran, Funktionen und Wörterbücher im Modus zu qualifizieren:

<code class="language-sql">CREATE OR REPLACE FUNCTION public.f_unaccent(text)
  RETURNS text
  LANGUAGE sql IMMUTABLE PARALLEL SAFE STRICT AS
$func$
SELECT public.immutable_unaccent('public.unaccent', )  -- 限定函数和字典的模式
$func$;

CREATE INDEX users_unaccent_name_idx ON users(public.f_unaccent(name));</code>
Nach dem Login kopieren

Erweiterte Funktionen

Ligatur

In PostgreSQL 9.6 und höher unaccent() werden Ligaturen korrekt erweitert, indem „Œ“ in „OE“ und „ß“ in „ss“ umgewandelt wird.

Mustervergleich

Durch die Verwendung von unaccent in Verbindung mit dem Modul pg_trgm können Sie einen willkürlichen Mustervergleich mit LIKE oder ILIKE durchführen und einen Triplett-GIN- oder GIST-Ausdrucksindex erstellen.

Der Einfachheit halber erwägen Sie die Verwendung der Triplett-Indizierung für links verankerte Muster.

Das obige ist der detaillierte Inhalt vonWie kann ich in PostgreSQL akzentunabhängige Abfragen durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage