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 !