15 mai 2008

Effectuer une requete sql de recherche sans accents avec Oracle

Voici la requête magique :

SELECT street FROM streets WHERE TRANSLATE(street, 'éèàâêîôûäëïöü', 'eeaaeiouaeiou') LIKE TRANSLATE(?, 'éèàâêîôûäëïöü', 'eeaaeiouaeiou')
Cette requête remplace tout les caractéres accentué des valeurs de la base de donnée et de la chaîne passée en paramètre.


Et voici une version qui compare sans tenir compte des majuscules :
SELECT street FROM streets WHERE UPPER(TRANSLATE(street, 'éèàâêîôûäëïöü', 'eeaaeiouaeiou')) LIKE UPPER(TRANSLATE(?, 'éèàâêîôûäëïöü', 'eeaaeiouaeiou'))

Aucun commentaire: