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 :

Supprimer une seule fois une partie d'une chaine


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Supprimer une seule fois une partie d'une chaine
    Bonjour,

    Je souhaite supprimer (ou remplacer par un espace) une partie d'une chaîne et seulement 1 fois.

    Exemple : Supprimer ' ZZ'
    Chaine1 = ' PREMIERE PARTIE ZZ SECONDE PARTIE'
    Résultat souhaitée = ' SECONDE PARTIE'

    Chaine2 = ' ZZ PREMIERE PARTIE ZZ SECONDE PARTIE'
    Résultat souhaité = ' PREMIERE PARTIE ZZ SECONDE PARTIE'


    J'étais parti avec une expression régulière mais je ne trouve pas totalement mon bonheur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT regexp_REPLACE (Chaine,'^.* ZZ.', ' ')
    FROM DUAL;
    Ce code fonctionne avec la chaine1 mais pas avec la chaine2. Merci de votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 69
    Points
    69
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH sr AS
    (
    SELECT ' PREMIERE PARTIE ZZ SECONDE PARTIE' AS col FROM dual union ALL
    SELECT ' ZZ PREMIERE PARTIE ZZ SECONDE PARTIE'   FROM dual 
    )
    SELECT col ,REPLACE (col,'ZZ', ' '), instr(col,' ZZ',1,1),instr(col,' ZZ',1,2),instr(col,' ZZ',1,2)-(instr(col,' ZZ',1,1)+4),
           substr(col,instr(col,' ZZ',1,1)+4,length(col))
      FROM sr
    si tu veux SECONDE PARTIE et PREMIERE PARTIE ZZ SECONDE PARTIE en resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    WITH sr AS
    (
    SELECT ' PREMIERE PARTIE ZZ SECONDE PARTIE' AS col FROM dual union ALL
    SELECT ' ZZ PREMIERE PARTIE ZZ SECONDE PARTIE'   FROM dual 
    )
    SELECT col ,REPLACE (col,'ZZ', ' '), instr(col,' ZZ',1,1),instr(col,' ZZ',1,2),instr(col,' ZZ',1,2)-(instr(col,' ZZ',1,1)+4),
           substr(col,instr(col,' ZZ',1,1)+4,--length(col))
           case when (instr(col,' ZZ',1,2)-(instr(col,' ZZ',1,1)+4))> 0  
                                           then instr(col,' ZZ',1,2)-(instr(col,' ZZ',1,1)+4)
                when (instr(col,' ZZ',1,2)-(instr(col,' ZZ',1,1)+4))< 0  then
                                           length(col) 
                                           end )
      FROM sr
    si tu veux SECONDE PARTIE et PREMIERE PARTIE

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci vttvolant, je vais prendre la 1ère solution où je conserve le ZZ.

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

Discussions similaires

  1. [Drupal] mettre une Intro flash qui s'affiche une seule fois.
    Par gdhia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 11/11/2011, 14h01
  2. Deux exécutable, une DLL: sera-t-elle chargée une seule fois?
    Par scadieux dans le forum Framework .NET
    Réponses: 8
    Dernier message: 09/04/2009, 11h26
  3. Réponses: 4
    Dernier message: 06/06/2008, 10h56
  4. Réponses: 2
    Dernier message: 02/01/2008, 15h31

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