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 :

Besoin d'aide avec Regexp_like


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Par défaut Besoin d'aide avec Regexp_like
    Bonjour à tous, alors mon problème est simple. Je dois faire une jointure entre 2 tables.. jusque là tout va bien Cependant la valeur des clés ne sont pas les mêmes et c'est là que cela se complique et que j'ai besoin je pense d'utiliser REGEXP_LIKE( ).

    Pour faire simple, j'ai une 1ère table A avec une clé primaire nom_script et dont la valeur ressemble à ceci, pour un enregistrement donné 'nom_du_script_GxRx_Vx-x.sce'.
    Je dois faire une jointure avec la table B qui a le même nom de clé primaire (nom_script) mais pour qui ne contient comme valeur que 'nom_du_script' sans tout le bazar qu'il y a derrière. Le problème est que le nom du fichier est aléatoire et les versions de scripts également, avec parfois présence ou non de "_Vx-x" ( où x representent la version )

    J'espere avoir été suffisamment clair ( un schema étant plus parlant qu'un long discours, en voici un qui sera je l'espère un peu plus explicite )



    Il faudrait donc pouvoir faire une jointure entre ces 2 tables, en réussissant à ne selectionner que le debut du nom du script de la table A, sans _GxRx_Vx-x.sce qui se trouve à la fin.
    Voili voilou bon courage

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    where 
      substr(tablea.nomscript||'_',1,length(tableb.nomscript)+1)
      =
      tableb.nomscript||'_'

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Par défaut
    Merci laurent d'avoir répondu si rapidement, par contre ta solution ne convient pas car le caractere " _ " est présent un peu partout dans le nom des scripts et non pas seulement à la fin

  4. #4
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Bonjour,

    Tu peux utiliser REGEXP_REPLACE sur A.nom_script pour retrouver le nom du script tel qu'il est dans B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SQL> with A as (select 'nom_du_script_GxRx_Vx-x.sce' nom_script from dual union all
      2             select 'nom_du_script_GxRx.sce' nom_script from dual union all
      3             select 'nom_du_script_GaRb_V1-2.sce' nom_script from dual union all
      4             select 'nom_du_script_GaRb_V1-3.sce' nom_script from dual union all
      5             select 'nom_du_script_G1R02_V1-10.sce' nom_script from dual)
      6  select nom_script nom_script_a,
      7         regexp_replace(nom_script, '(_G.+R.+)(_V.+-.+)?\.sce$', '.sce') nom_script_b
      8  from A;
     
    NOM_SCRIPT_A                   NOM_SCRIPT_B
    ------------------------------ ------------------------------
    nom_du_script_GxRx_Vx-x.sce    nom_du_script.sce
    nom_du_script_GxRx.sce         nom_du_script.sce
    nom_du_script_GaRb_V1-2.sce    nom_du_script.sce
    nom_du_script_GaRb_V1-3.sce    nom_du_script.sce
    nom_du_script_G1R02_V1-10.sce  nom_du_script.sce

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Par défaut
    Alrs là chapeau bas xdescamp ^^ cela a l'air de fonctionner pour pas mal des scripts. Il existe encore quelques petites spécificités telles que gérer les cas où l'on a nom_du_script_GROUPE_GxRx.sce.
    Effectivement parfois une partie dans le nom du script vaut aussi _G, ce qui a pour effet de couper avant. Y'a t'il moyen de lui préciser de ne prendre en compte uniquement si le caractère suivant est un x ou un chiffre?
    En tout cas un grand merci à toi

  6. #6
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    J'ai modifié pour limiter à G suivi de un (et un seul) "x" en minuscule, ou de un ou plusieurs chiffres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SQL> with A as (select 'nom_du_script_GxRx_Vx-x.sce' nom_script from dual union all
      2             select 'nom_du_script_GxRx.sce' nom_script from dual union all
      3             select 'nom_du_script_GaRb_V1-2.sce' nom_script from dual union all
      4             select 'nom_du_script_GaRb_V1-3.sce' nom_script from dual union all
      5             select 'nom_du_script_G1R02_V1-10.sce' nom_script from dual union all
      6             select 'nom_du_script_GROUPE_GxRx.sce' nom_script from dual union all
      7             select 'nom_du_script_GROUPE_G1Rx.sce' nom_script from dual union all
      8             select 'nom_du_script_GROUPE_G12Rx.sce' nom_script from dual)
      9  select nom_script nom_script_a,
     10         regexp_replace(nom_script, '(_G(x|[0-9]+)R.+)(_V.+-.+)?\.sce$', '.sce') nom_script_b
     11  from A;
     
    NOM_SCRIPT_A                   NOM_SCRIPT_B
    ------------------------------ ------------------------------
    nom_du_script_GxRx_Vx-x.sce    nom_du_script.sce
    nom_du_script_GxRx.sce         nom_du_script.sce
    nom_du_script_GaRb_V1-2.sce    nom_du_script_GaRb_V1-2.sce
    nom_du_script_GaRb_V1-3.sce    nom_du_script_GaRb_V1-3.sce
    nom_du_script_G1R02_V1-10.sce  nom_du_script.sce
    nom_du_script_GROUPE_GxRx.sce  nom_du_script_GROUPE.sce
    nom_du_script_GROUPE_G1Rx.sce  nom_du_script_GROUPE.sce
    nom_du_script_GROUPE_G12Rx.sce nom_du_script_GROUPE.sce
    Content que ça puisse rendre service !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Par défaut
    Et bien c'est parfait, tous mes cas sont correctement gérés merciiiii

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

Discussions similaires

  1. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 12h39
  2. [ASA] J'ai besoin d'aide avec sybase et vb6 svp !!
    Par tibo830 dans le forum SQL Anywhere
    Réponses: 7
    Dernier message: 12/05/2006, 10h09
  3. Besoin d'aide avec TinyXML
    Par Clad3 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/08/2005, 18h20
  4. Réponses: 2
    Dernier message: 29/08/2003, 17h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

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