IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Remplacer un caractère accentué par son équivalent non accentué [11gR2]


Sujet :

SQL Oracle

  1. #1
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut Remplacer un caractère accentué par son équivalent non accentué
    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
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Utilisez translate et non pas convert.

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Merci, nous avons finalement décidé de déléguer cette tâche côté applicatif, car il est plus simple de détecter les caractères accentués en C# qu'en PL SQL.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/12/2010, 16h58
  2. Réponses: 3
    Dernier message: 18/02/2008, 14h05
  3. Remplacer certains caractères (accentués) par d'autre
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 24/07/2007, 13h05
  4. Comment remplacer un resultat numérique par son libellé ?
    Par bds2006 dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2006, 11h03
  5. [XSLT ]remplacement d un caractere par son code
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/09/2005, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo