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

PL/SQL Oracle Discussion :

Remplacer une partie d'une chaine par un caractere ou une sous_chaine


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Par défaut Remplacer une partie d'une chaine par un caractere ou une sous_chaine
    Bonjour,

    J'ai une chaine qui ressemble à ceci : modele10500_maTable
    Je veux pour chaque requête remplacer les deux zero par le caractere %
    donc pour avoir ça à la fin modele105%_maTable
    la requete qui s'approche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 'modele10500_maTable', SUBSTR('modele10500_maTable',INSTR('modele10500_maTable' ,'_')) from dual;
    ce que j'essaye de faire est reperer la position du caractere _, ensuite je voudrai a partir de sa position reculer de deux caractères mais je n'arrive pas.


    Merci

  2. #2
    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 n'avais pas lu la dernière phrase.. je corrige

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a, CASE WHEN SUBSTR(a, INSTR(a, '_') -2, 2) = '00' THEN SUBSTR(a, 1, INSTR(a, '_') - 3) ||'%'|| SUBSTR(a, INSTR(a, '_'))
    ELSE a
     END rempl
    FROM (SELECT 'modele10500_maTable' a FROM dual
    UNION SELECT 'modele1050_maTable' a FROM dual
    UNION SELECT 'modele100500_maTable' a FROM dual
    )
     
    A	REMPL
    modele100500_maTable	modele1005%_maTable
    modele10500_maTable	modele105%_maTable
    modele1050_maTable	modele1050_maTable

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Par défaut
    Merci MCM,

    Juste une question.
    Mon cas c'est pas forcement deux 00, ça peut etre 01, ou 10 ou 99 ou n'importe.
    en gros 2 caracteres avant le caractere (_).
    Merci

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTR(a, 1, INSTR(a, '_') - 3) ||'%'|| SUBSTR(a, INSTR(a, '_'))

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Par défaut
    Merci beaucoup.
    Je teste et je te dis ça.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous pouvez utiliser une expression régulière, mais ce sera moins performant que la solution de McM (les regexp sont coûteuses en CPU) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select regexp_replace(a, '.._', '%_')

Discussions similaires

  1. Remplacer une partie d'un mot par une autre
    Par darkman19320 dans le forum Linux
    Réponses: 3
    Dernier message: 22/06/2012, 10h47
  2. [XSLT 2.0] Remplacer le début de la chaine par une autre
    Par cris83500 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/04/2011, 11h26
  3. Remplacer une partie de l'image par 0
    Par code_source dans le forum Images
    Réponses: 2
    Dernier message: 11/01/2011, 16h11
  4. [MySQL] recuperer une partie de la chaine récupérée aprés d'aprés une requête MySQL
    Par bourbita.thameur dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/06/2009, 13h15
  5. Réponses: 1
    Dernier message: 24/05/2007, 21h20

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