Requêtes de recherche sous Oracle, Informix, Postgresql : gestion de la casse et des accents

Pour qu’un outil de recherche soit performant et agréable à utiliser, il faut qu’il soit capable de retourner tous les éléments susceptibles de correspondre à ce que l’utilisateur recherche sans tenir compte de la casse et/ou des accents.

Sous Oracle, il est possible d’utiliser l'opérateur « TRANSLATE » pour gérer ce genre de problème.

SELECT * FROM TABLE WHERE TRANSLATE(UPPER(monChamp),’ ÉÈÊËÀÄÂÎÏÔÖÛÜ’,’ EEEEAAAIIOOUU’)) LIKE TRANSLATE(UPPER(‘%requêtes%’), ‘ÉÈÊËÀÄÂÎÏÔÖÛÜ’, ‘EEEEAAAIIOOUU’);

Sous Informix, il est possible de passer par le « MATCHES » et les regexp.

SELECT * FROM TABLE WHERE UPPER(monChamp) MATCHES ‘*R\[EÉÈÊËéèêë\]Q\[UÛÜûü\]\[EÉÈÊËéèêë\]T\[EÉÈÊËéèêë\]S*’;

Après un «MATCHES», il est possible d’utiliser les symboles suivants :

  • * : représente une chaîne de 0 ou plusieurs caractères
  • ? : représente un seul caractère
  • […] : contient un ensemble de caractères

Sous Postgresql, la solution passe par l'utilisation du « SIMILAR TO » et des regexp.

SELECT * FROM TABLE WHERE UPPER(monChamp) SIMILAR TO ‘%R\[EÉÈÊËéèêë\]Q\[UÛÜûü\]\[EÉÈÊËéèêë\]T\[EÉÈÊËéèêë\]S%’;

En résultat de requête, nous aurons bien toutes les lignes contenant ‘requete’ sans tenir compte de la casse et/ou des accents :

  • requete
  • requête
  • REQUETE
  • REQUÊTE
  • ...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.