Maison >base de données >tutoriel mysql >Comment puis-je réaliser des comparaisons de chaînes insensibles aux accents dans PostgreSQL ?

Comment puis-je réaliser des comparaisons de chaînes insensibles aux accents dans PostgreSQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-20 12:27:09232parcourir

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

PostgreSQL prend-il en charge le classement « ignorer les accents » ?

PostgreSQL lui-même ne prend pas en charge nativement le classement « ignorer les accents » comme le fait Microsoft SQL Server. Cependant, deux alternatives s'offrent à vous :

Utilisez le module Unaccent

La communauté Postgres a créé le module unaccent, qui fournit des fonctions permettant de supprimer les accents des chaînes. Cela peut être utilisé pour créer des classements personnalisés « ignorer les accents ».

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

Utiliser le classement ICU (PostgreSQL 12 ou supérieur)

PostgreSQL 12 introduit la prise en charge des classements ICU, ce qui rend possible les combinaisons et le tri insensibles à la casse et aux accents. Toutefois, les classements ICU présentent une dégradation des performances et ne peuvent pas être utilisés avec certaines opérations telles que la correspondance de modèles.

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

Bonnes pratiques

Pour un usage général, le module unaccent est plus efficace et recommandé pour créer des requêtes "ignorer les accents". Il permet l’inlining de fonctions et l’indexation d’expressions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn