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 :

number dans varchar


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut number dans varchar
    bonjour,

    Voilà, j'ai un problème d'apparence tout simple ; je dois extraire un nombre d'un champ en Varchar(2) ; en gros, retirer le numéro de voie de l'adresse complète d'une personne, pour le mettre dans une colonne différente de ma requete ....

    Actuellement, j'ai donc le numéro de voie inclus dans l'un des 4 champ adresse

    MA_TABLE; champ_adresse1, ..., champ_adresse4, ...

    Comment faire mon "select" pour avoir mon numéro sorti du champ où il se trouve, s'il vous plaît ????

  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
    Concatène tous les champs
    Puis avec TRANSLATE(TRANSLATE ça va peut être marcher, mais attention cette méthode enlèvera tous les caractères non numériques.
    Si tu en a plusieurs, ça ne va pas aller.
    Ex Appt 33B 50 Avenue des oracliens
    Te sortiras 3350

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TRANSLATE('appt33B 50 ave', '0'||TRANSLATE('appt33B 50 ave', 'a0123456789', 'a'), '0') as num
    FROM dual
     
    3350

  3. #3
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    Trop fort !!!!!!!!!!!!!!!!!!!!!!

    Merci.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Par défaut
    Résolu donc ?

  5. #5
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    voui.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Par défaut
    Faut cocher résolu alors

  7. #7
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par McM Voir le message
    Concatène tous les champs
    Puis avec TRANSLATE(TRANSLATE ça va peut être marcher, mais attention cette méthode enlèvera tous les caractères non numériques.
    Si tu en a plusieurs, ça ne va pas aller.
    Ex Appt 33B 50 Avenue des oracliens
    Te sortiras 3350

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TRANSLATE('appt33B 50 ave', '0'||TRANSLATE('appt33B 50 ave', 'a0123456789', 'a'), '0') as num
    FROM dual
     
    3350
    euh je peux avoir la logique de ton truc la ?? j'avoue ne pas comprendre ....


    Moi j'aurais fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TRIM(TRANSLATE ('appt33B 50 ave', 'azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN', ' ')) as num
      FROM DUAL

  8. #8
    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
    T'as oublié le é dans ta chaine, puis le à, le (, le #....
    Bon, on va pas tous les faire, alors on le fait en 2 fois :
    1- On enlève tout ce qu'on veut garder '0-9' (donc il ne reste que ceux qu'on veut pas)
    2- On enlève ce qu'à donné le résultat précédent (il ne reste que les 0-9)

    le coup du ('a' ||'....', 'a')c'est parce qu'il faut obligatoirement une donnée dans le 3ème paramètre.

    Voila.

    Le plus simple pour comprendre, c'est de séparer les translate et de voir ce que ça donne.

  9. #9
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par McM Voir le message
    T'as oublié le é dans ta chaine, puis le à, le (, le #....
    Bon, on va pas tous les faire, alors on le fait en 2 fois :
    1- On enlève tout ce qu'on veut garder '0-9' (donc il ne reste que ceux qu'on veut pas)
    2- On enlève ce qu'à donné le résultat précédent (il ne reste que les 0-9)

    le coup du ('a' ||'....', 'a')c'est parce qu'il faut obligatoirement une donnée dans le 3ème paramètre.

    Voila.

    Le plus simple pour comprendre, c'est de séparer les translate et de voir ce que ça donne.
    C'est ce que j'avais fait pour comprendre et justement comme j'avais zappé les carac. spéciaux je ne voyais pas l'interet ... ( l'habitude d'interdire tout accent )

  10. #10
    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
    Pour finir de t'achever:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TRIM(TRANSLATE ('appt33aaa 50 ave', 'azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN', ' ')) AS num
      FROM DUAL
     
    '33   50'


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

Discussions similaires

  1. [AS2] problème d'utilisation d'une variable number dans un calcul
    Par Mosler dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 12/06/2008, 21h44
  2. ORA-01722: invalid number dans un SQLLOADER
    Par Cofondinde dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 13/12/2007, 02h31
  3. recherche int dans varchar
    Par lazzeroni dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/11/2006, 13h12
  4. [XSLT] Number dans un for-each
    Par stepd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/08/2006, 13h40
  5. Réponses: 6
    Dernier message: 10/08/2006, 15h45

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