Pour faire une recherche « Case insensitive » et « Accent insensitive », plusieurs solutions :
- Configurer la table de la base « CIAI » et chaque requete sera « Case Insensitive » et « Accent Insensitive »
- Transformer le mot recherché pour parametrer la requetes SQL permettant de comparer des choses comparables…
Sous ORACLE :
SELECT * from table WHERE TRANSLATE (UPPER(champ4), ‘ÉÈÊÀÁÂÄÇÌÍÎÏÑÓÒÔÖÚÙÛÜ’, ‘EEEAAAACIIIINOOOOUUUU’) LIKE TRANSLATE (UPPER(‘%réunion commerciale%’), ‘ÉÈÊÀÁÂÄÇÌÍÎÏÑÓÒÔÖÚÙÛÜ’, ‘EEEAAAACIIIINOOOOUUUU’)
Cette syntaxe permet de comparer des chaines en majuscule dont les caractères accentués ont été remplacé par des caractères non accentués…).
Sous Oracle, il y a une autre solution (merci Cédric Courlet)
UPPER(CONVERT(VAR_SEARCHSTRING, ‘US7ASCII‘))
Sous SQL Server et Access :
SELECT * from table WHERE champ4 like ‘%r[eéèêë][uúùûü][nñ][iìíîï][oóòôö]n%‘
Dans ce cas, on voit que le SQL gère une forme de syntaxe d’expression régulière alors que sous ORACLE, on a du procéder à un remplacement.
Dans ces deux cas, on a accès à une recherche riche puisque « réunion commerciale » ressort les éléments suivants :
- En majuscule sans accent : REUNION COMMERCIALE
- En minuscule sans accents : reunion commerciale
- En majuscule avec accent : RÉUNION COMMERCIALE
- En minuscule sans accent : réunion commerciale
Tout quoi !