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

Oracle Discussion :

Remplacer les caractères spéciaux dans un string


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Par défaut Remplacer les caractères spéciaux dans un string
    Bonjour à tous,

    J'aimerais savoir comment il serait possible de créer un cursor qui parcour une table en remplaçant tous les caractères spéciaux par un espace afin de faire un trim et de garder uniquement les lettres de l'alphabet ?

    Est-ce que qqun aurait une idée ? Merci ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CURSOR c_ascii(p_char VARCHAR) IS
      SELECT  ASCII(p_char) result 
      FROM DUAL
      ;
    pour le moment je parcours le string (en upper) et je la passe au cursor ci-dessus puis si la valeur est entre 65 et 90 c'est donc entre A et B. Alors là je conquatène une variable afin de créer un mot entier.

    Mais n'y a-t-il pas une solution plus simple ?

  2. #2
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Par défaut
    Enfin je voulais dire que entre 65 et 90, cela signifie que ça comprends entre A et Z et non A et B, pardon

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Avec un double translate : le premier pour enlever les caractères que tu souhaites garder, et le second pour enlever le résultat du premier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT chaine, TRANSLATE(chaine, 'A'|| TRANSLATE(chaine, ' ABCDEFGHIJKLMNOPQRSTUVWXYZ', ' '), 'A') Asci
    FROM (SELECT 'a045rarhjiuot(A_çuHZTYZEàalmé&ù*&"ù²"m^²$"' AS chaine FROM dual)
     
    CHAINE						ASCI
    a045rarhjiuot(A_çuHZTYZEàalmé&ù*&"ù²"m^²$"	AHZTYZE
    Edit : Attention, les 'A' (caractère à garder) sur le premier translate et l'espace (caractère à enlever) dans le second translate sont importants, car translate nécessite au moins une valeur de remplacement.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Par défaut
    Super bonne idée !! ;-)
    Merci beaucoup

    est-ce qu'il est possible de mettre dans la 2ème chaîne : NOT IN 1ère chaîne ?

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Je ne comprends pas la question.. avec un exemple ce serait mieux

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Par défaut
    Un example :


    1ère chaine ; 2ème chaine ; Résultat souhaité

    O<% !XY?K( T S<4_,6* ; OXYKTS ; O XY K T S

    Ce que je voulais dire dans la remarque d'avant était de soustraire à la 1ère chaîne les caractères spéciaux ce qui donnerait exactement le résultat souhaité (d'une point de vue visuel).

    Je voudrais savoir s'il est possible de replacer les caractères qui ne sont pas dans la liste ' ABCDEFGHIJKLMNOPQRSTUVWXYZ' par des espace ?

    un grand merci d'avance.

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

Discussions similaires

  1. remplacer les caractères spéciaux d'un string ?
    Par franckcl dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2013, 11h46
  2. Remplacer les caractères spéciaux dans xml
    Par panda31 dans le forum Développement de jobs
    Réponses: 14
    Dernier message: 19/10/2011, 09h53
  3. Remplacer les caractères spéciaux dans un prénom(Regex)
    Par sajodia dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 17/05/2011, 17h19
  4. Réponses: 5
    Dernier message: 04/12/2007, 11h00
  5. les caractères spéciaux dans l'url, c'est mal !
    Par _gargamel_ dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/05/2007, 16h03

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