Bonjour,

Pour une chaîne de caractères donnée, je dois remplacer tous les caractères accentués par leur équivalent non accentué.

Au cours de mes recherches, j'ai trouvé différentes façons de procéder :
- Utiliser la fonction CONVERT :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT CONVERT ('àâåäæçéêèëíîìïóòôøõöœðšúûùüýÿñÂÁÀÅÃÄÆÇÉÊÈËÍÎÌÏÑÓÔÒØÕÖŠÚÛÙÜœŒŸÝ', 'US7ASCII') FROM dual;
Le problème c'est que pour certains caractères, ça me sort des points d'interrogation...

- Remplacer explicitement chaque caractère accentué en détectant son code UNICODE :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
v_inputText := REPLACE(v_inputText, UNISTR('\00E0'), 'a');
Ca marche très bien, mais si on veut gérer tous les caractères, ça peut vite virer au cauchemard

Pour le moment, je suis parti sur la seconde solution, mais je trouve ça lourd et pas très générique...

Connaissez-vous une façon de faire ça de manière un peu plus générique ?

A toute fin utile, voici les paramètres NLS de ma base (select * from NLS_DATABASE_PARAMETERS;):
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8ISO8859P1
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_RDBMS_VERSION 11.2.0.3.0

Merci par avance