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 :

Fonctions chaînes de caractères


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Par défaut Fonctions chaînes de caractères
    Bonjour;

    Je cherche des fonctions sql qui permette de récupérer un mot a partir d’une phrase entre le premier et le deuxième espace.

    Exemple :
    2 RUE DE LA REPUBLIQUE ==> je récupérer seulement "RUE"
    2 RUE DE LA REPUBLIQUE ==> je récupérer seulement "DE LA REPUBLIQUE"

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Pour extraire le deuxième "mot" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTR(adresse, INSTR(adresse, ' ') + 1, INSTR(adresse, ' ', 1, 2) - INSTR(adresse, ' ') - 1)
    Pour le reste de l'adresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTR(adresse, INSTR(adresse, ' ', 1, 2) + 1)
    Mais ça ne fonctionnera pas pour le "2 bis rue de la république"
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Avec regexp, ce sera probablement plus facile de traiter tous les cas.
    Juste un exemple:

    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
      2   exemple as (
      3    select '2 RUE DE LA REPUBLIQUE' text from dual union all
      4    select '2 bis RUE DE LA REPUBLIQUE' text from dual union all
      5    select '23bis RUE DE LA REPUBLIQUE' text from dual
      6  ),
      7   expression as (
      8    select '([0-9]+( *bis|ter)?) *([^ ]+) *(.*$)' re from dual
      9  )
     10  select text,regexp_replace(text,re,'\1') "numero",regexp_replace(text,re,'\3') "type voie",regexp_replace(text,re,'\4') "nom voie"   from exemple, expression
     11  /
    TEXT                       numer type nom voie
    -------------------------- ----- ---- --------------------
    2 RUE DE LA REPUBLIQUE     2     RUE  DE LA REPUBLIQUE
    2 bis RUE DE LA REPUBLIQUE 2 bis RUE  DE LA REPUBLIQUE
    23bis RUE DE LA REPUBLIQUE 23bis RUE  DE LA REPUBLIQUE
    Cordialement,
    Franck.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Bravo
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Par défaut
    Bonjour;

    Merci à vous chaleureusement pour votre aide et votre réactivité
    Les deux solutions m'ont apparaît intéressantes, J’arrive bien à gérer la majorité des cas.
    Par contre , Il me reste à gérer les cas suivants avec la deuxième solution, Pouvez vous m'aider ? :

    25-65 RUE DE LA REPUBLIQUE ==> 25-65 / RUE/ DE LA REPUBLIQUE
    25-65 BIS RUE DE LA REPUBLIQUE ==> 25-65 BIS / RUE/ DE LA REPUBLIQUE
    25-65, BIS RUE DE LA REPUBLIQUE==> 25-65 BIS / RUE/ DE LA REPUBLIQUE
    PROMENADE DU PRESIDENT RENE COTY ==> null /PROMENADE/DU PRESIDENT RENE COTY
    ROND POINT DU STADE ==> null /ROND POINT/DU STADE
    L'EMPIRE BOULEVARD DE L AVENIR==> null /L'EMPIRE BOULEVARD/DE L'AVENIR
    LE PARC NOTRE DAME 6 AVENUE DE LA BASILIQUE ==> null /LE PARC/NOTRE DAME 6 AVENUE DE LA BASILIQUE

    Note :NUM VOIE /TYPE VOIE/NOM VOIE
    Merci

  6. #6
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Par défaut fonction en sql qui permette de chercher des mots dans une chaîne de caractères
    Bonjour
    J’ai pensé à une autre manière pour gérer la récupération des différentes colonnes,
    Je suis à la recherche d’une fonction en sql qui permette de chercher des mots dans une chaîne de caractères.
    Exp : dans la chaîne [25-65 BIS RUE DE LA REPUBLIQUE] je vérifie l'existence de l’un des mots : Rue, Boulevard...
    Merci de votre aide

    Cdt

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 16
    Dernier message: 24/10/2006, 21h37
  3. Réponses: 2
    Dernier message: 15/10/2005, 23h29
  4. Réponses: 5
    Dernier message: 15/02/2005, 18h07

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