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 :

Recherche de texte dans chaine de caractère


Sujet :

Oracle

  1. #1
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut Recherche de texte dans chaine de caractère
    Bonjour,

    Voici la requête que j'essais de faire :

    j'ai une table qui contient le champ avec les enregistrements suivants :

    Venezuela Financial
    IR- Rx Pharma. in Europe
    IR- Drug Delivery in North America
    Finland Corporates

    Mon but et de renseigner un champs de cette même table avec uniquement le pays ou la zone géographique correspondantes :

    Voilà ce que je veux obtenir :

    Venezuela
    Europe
    North America
    Finland

    Sachant qu'à la rigueur, je peux m'appuyer sur une table intermédiaire où les pays et zone sont inscrites.

    Merci pour votre aide

  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
    Points : 4 926
    Points
    4 926
    Par défaut
    tu peux commencer avec "LIKE" et ensuite envisager "CONTAINS" si tu expère avoir de meilleures performances (exige oracle text et un index de domaine)

    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
    32
    33
    34
    35
     
    SQL> create table countries(country varchar2(40));
    Table created.
    SQL> insert into countries values('Europe');
    1 row created.
    SQL> insert into countries values('Finland');
    1 row created.
    SQL> insert into countries values('France');
    1 row created.
    SQL> insert into countries values('North America');
    1 row created.
    SQL> insert into countries values('Venezuela');
    1 row created.
    SQL> 
    SQL> create table customer(name varchar2(40));
    Table created.
    SQL> insert into customer values('Venezuela Financial');
    1 row created.
    SQL> insert into customer values('IR- Rx Pharma. in Europe');
    1 row created.
    SQL> insert into customer values('IR- Drug Delivery in North America');
    1 row created.
    SQL> insert into customer values('Finland Corporates');
    1 row created.
    SQL> insert into customer values('Geomar');
    1 row created.
    SQL> 
    SQL> select name,country from countries,customer where name like '%'||country(+)||'%';
    NAME                                     COUNTRY
    ---------------------------------------- ----------------------------------------
    Venezuela Financial                      Venezuela
    IR- Rx Pharma. in Europe                 Europe
    IR- Drug Delivery in North America       North America
    Finland Corporates                       Finland
    Geomar

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    sauf qu'il n'a qu'une table

    A priori INSTR devrait mieux répondre au problème en recherchant le 1° espace en partant de la fin non ?

  4. #4
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Requin15
    Sachant qu'à la rigueur, je peux m'appuyer sur une table intermédiaire où les pays et zone sont inscrites
    ben moi j'ai créé une table intermédiaire, non?

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par laurentschneider
    ben moi j'ai créé une table intermédiaire, non?
    oui mais tu la remplies à la main... il veut quelque chose d'automatique

  6. #6
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    Merci pour vos réponses, c'est trop sympa!
    Je pense que la première solution peut convenir. Je la teste dans qqs minutes.

    En effet, j'ai cette table PAYS qui peut aider pour faire la comparaison :

    chaine = "Ir - truc France"

    "Si tu trouves "Ir ou Truc ou France" dans PAYS, alors maValeur = "ce que je trouve"

    Or dans PAYS, je vais trouver France, donc maValeur="France"

    Est ce que ce raisonnement peut fonctionner ?

    Merci

  7. #7
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je verrais mieux
    chaine = "Ir - truc France"

    "Si tu trouves la valeur de PAYS dans "Ir - truc France" dans PAYS, alors maValeur = la valeur de PAYS

    donc maValeur="France"

  8. #8
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Les Expressions Régulières ca ne resoud pas son problème ?

  9. #9
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    oui mais tu la remplies à la main... il veut quelque chose d'automatique
    on peut pas avoir le beurre, l'argent du beurre et la fille de la crémière, non?

    moi j'avais compris qu'il pouvait bien se créer une table REGION

  10. #10
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par bouyao
    Les Expressions Régulières ca ne resoud pas son problème ?
    pas vraiment. dans son exemple le pays est parfois au début, parfois à la fin, et parfois en deux mots. Bon c'est vrai que REGEXP_LIKE permet de mieux partager les mots, mais c'est tellement plus lent...

  11. #11
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Euh je suis d'accord. Il me semble que toutes les solutions proposées s'appuient sur une table de référence de toutes façons. Et à part une table de référence l'autre solution serait de passer par une fonction ou procédure avec tous les pays codés en dur.

  12. #12
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    Merci à tous pour vos réponse!

    voici l'exemple d'une requête utilisée, en m'appuyant sur une table pays.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update R_GP_SET_DETAIL u set u.tmp_l_geo=
        (select distinct km.l_pays
         from km_n_pays km
         where upper(u.set_name) like '%'||km.l_pays(+)||'%')
    Et cela marche super bien.

    Merci encore !

  13. #13
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Et le bouton résolu ?

  14. #14
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    oups! il n'est jamais trop tard

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

Discussions similaires

  1. [Batch] Rechercher et renommer une chaine de caractère complexe dans un fichier texte
    Par mrcanardwc dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 24/06/2011, 13h02
  2. Rechercher du texte dans une chaine
    Par Zanku dans le forum Windows
    Réponses: 2
    Dernier message: 12/01/2009, 17h13
  3. Tri dans chaine de caractères selon style police de texte
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/09/2008, 14h44
  4. Recherche de texte dans une chaine de caractères
    Par julien20vt dans le forum Oracle
    Réponses: 7
    Dernier message: 19/12/2006, 10h02
  5. Réponses: 4
    Dernier message: 07/12/2006, 11h01

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