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 :

Replace avec une longue liste de termes à remplacer


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par défaut Replace avec une longue liste de termes à remplacer
    Bonjour,

    J'ai un script PHP qui traite des chaines de caractères pour supprimer des mots parasites.

    Je souhaite transposer ce traitement PHP directement en SQL dans ORACLE.

    Aujourd'hui j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $liste_rs=array("sas","soc anonyme","ste gen de batiment","entreprise ","societe","entreprise generale batiment","monsieur","etablissements","scp","ass","scp","soc","sas","sarl","sa","entr","entreprise","ent","ste","selarl","sci");
    $chaine=str_replace($liste_rs,"", $chaine);
    Comment puis-je faire en SQL dans Oracle pour reproduire le même fonctionnement ?

    Actuellement je n'y arrive qu'en contenant des REPLACE et ça devient vite illisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE($chaine,'sas',''),"soc anonyme",""),........)
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Avec un REGEXP_REPLACE, c'est peut être un peu plus lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 'soc ceci est une phrase sas contenant entreprise des mots clés soc anonyme qu il faut supprimer soc sas et les ste gen de batiment' as c,
           REGEXP_REPLACE('soc ceci est une phrase sas contenant entreprise des mots clés soc anonyme qu il faut supprimer soc sas et les ste gen de batiment',
                          '*(sas)*(soc anonyme)*(ste gen de batiment)*(entreprise)*(soc)*',
                          '') as str_replace
      from dual

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par défaut
    Ca ne marche pas si je veux prendre en compte les espaces avant ou après certains mots clés, pour éviter que les chaines soient supprimées en milieu de mot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT RAISON_SOCIALE1, REGEXP_REPLACE(RAISON_SOCIALE1,'*
    (SAS )*( SAS)*(SOC ANONYME )*(STE GEN DE BATIMENT )*(ENTREPRISE )*(ETS )*(SOC )*( INC)*( SA)*( SAS)*','') FROM MD_COMPTE WHERE RAISON_SOCIALE1 LIKE '% SA' OR RAISON_SOCIALE1 LIKE '% SAS' OR RAISON_SOCIALE1 LIKE 'ENTREPRISE' ;
    Résulats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    RAISON SOCIALE 1 / RESULTAT DU REGEXP_REPLACE
    WURTH FRANCE SA	/ WURTH FRANCE SA
    LAMY LUTTI LEAF FRANCE SAS / LAMY LUTTI LEAF FRANCE SAS
    DMV STAINLESS SAS / 	DMV STAINLESS SAS
    DOSAPRO MILTON ROY SA / 	DOSAPRO MILTON ROY SA
    AKER YARDS SA / 	AKER YARDS SA
    BRIDGESTONE FRANCE SA / 	BRIDGESTONE FRANCE SA
    PARFUMS GIVENCHY SA / 	PARFUMS GIVENCHY SA
    BAYER SAS / 	BAYER SAS
    ETS HENRI PEIGNEN SA / 	ETS HENRI PEIGNEN SA
    GUY DEGRENNE SA / 	GUY DEGRENNE SA

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Peut être du côté du $ pour préciser à la regexp que l'on ne veut supprimer que en fin de chaîne :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SQL> with t as (
    select 'WURTH SOC FRANCE SA' as c from dual union all
    select 'LAMY SOC LUTTI LEAF FRANCE SAS' as c from dual union all
    select 'DMV SOC STAINLESS SAS' as c from dual union all
    select 'DOSAPRO MILTON ROY SA' as c from dual union all
    select 'AKER SAS YARDS SA' as c from dual union all
    select 'BRIDGESTONE FRANCE SA' as c from dual union all
    select 'PARFUMS SOC GIVENCHY SA' as c from dual union all
    select 'BAYER SAS' as c from dual union all
    select 'ETS HENRI PEIGNEN SA' as c from dual union all
    select 'GUY DEGRENNE SA SOC' as c from dual
    )
    select c, REGEXP_REPLACE(c, '(SOC)$|(SAS)$|(SA)$', '') as c2
      from t;  2    3    4    5    6    7    8    9   10   11   12   13   14
     
    C                                                  C2
    -------------------------------------------------- --------------------------------------------------
    WURTH SOC FRANCE SA                                WURTH SOC FRANCE
    LAMY SOC LUTTI LEAF FRANCE SAS                     LAMY SOC LUTTI LEAF FRANCE
    DMV SOC STAINLESS SAS                              DMV SOC STAINLESS
    DOSAPRO MILTON ROY SA                              DOSAPRO MILTON ROY
    AKER SAS YARDS SA                                  AKER SAS YARDS
    BRIDGESTONE FRANCE SA                              BRIDGESTONE FRANCE
    PARFUMS SOC GIVENCHY SA                            PARFUMS SOC GIVENCHY
    BAYER SAS                                          BAYER
    ETS HENRI PEIGNEN SA                               ETS HENRI PEIGNEN
    GUY DEGRENNE SA SOC                                GUY DEGRENNE SA
     
    10 ligne(s) selectionnee(s).
     
    SQL>

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Instancez vos remplacement dans une table temporaire et faite un produit cartésien.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Probleme avec une DropDown List
    Par tirisus dans le forum JSF
    Réponses: 3
    Dernier message: 25/03/2009, 21h25
  2. Charger un GridView avec une string list.
    Par dacid dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/02/2009, 09h29
  3. Repeater avec une datasource List<Object>
    Par Arthis dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/09/2008, 14h39
  4. [W3C] Problème avec une balise liste
    Par Gizmil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/05/2008, 11h39
  5. [LINQ] Where avec une Generic.List
    Par Firedeal dans le forum Framework .NET
    Réponses: 2
    Dernier message: 28/03/2008, 15h32

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