J'essaie de faire en sorte que PostgreSQL 8.4.3 fasse une correspondance insensible à la casse avec son opérateur ~*
lorsque les chaînes contiennent des caractères non-ASCII comme les trémas allemands. La base de données, le terminal et tout le reste sont configurés pour utiliser UTF-8.Comment utiliser la correspondance insensible à la casse avec PostgreSQL et Umlauts?
est ici le problème en quelques mots:
SELECT 'Ö' ~* 'ö'; -- false
Il existe d'autres variantes qui font un travail:
SELECT 'Ö' ILIKE 'ö'; -- true
SELECT 'Ö' ~* '[Öö]'; -- true
SELECT LOWER('Ö') ~* 'ö'; -- true
Aucune de ces alternatives me rendent particulièrement heureux. ILIKE n'utilise pas d'expressions régulières. [Öö] implique de réécrire le terme de recherche. LOWER() est probablement la meilleure solution de contournement, mais j'aimerais vraiment que l'opérateur ~*
fonctionne comme il le devrait.
Merci d'avance.
Il y a un problème lié avec les trémas et les limites de mots. Par exemple, le modèle '\ möl' ne correspondra pas à la chaîne 'öl'. – Zilk