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 :

[SQL] reconnaitre du numérique sur une chaine de caractére


Sujet :

SQL Oracle

  1. #1
    Inscrit
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Points : 94
    Points
    94
    Par défaut [SQL] reconnaitre du numérique sur une chaine de caractére
    Bonjour,

    Est -il possible avec une requete sql d'extraire la partie numerique d'une chaine de caractéres par exemple:
    extraire 4590 sur : "escale n° 4590 sur EST"
    Merci de votre aide

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est possible.
    Par contre la solution que je te propose regroupera les chiffres s'ils sont à plusieurs endroits.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    translate(donnee, '0'|| translate(donnee, 'a0123456789','a'), '0')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT TRANSLATE(donnee, '0'|| TRANSLATE(donnee, 'a0123456789','a'), '0') resultat
    FROM (
    	SELECT 'escale n° 4590 sur EST' AS donnee FROM dual
      UNION ALL
      SELECT 'escale n° 4590 sur EST 35' AS donnee FROM dual
      )
     
    RESULTAT
    4590
    459035
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Inscrit
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Points : 94
    Points
    94
    Par défaut
    oui merci pour ta réponse

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Pour information, Pacmann a rédigé un article sur son blog à ce sujet :
    http://pacmann.over-blog.com/article...-51158452.html

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tiens, si Pacmann passe par là, son point 3 est un peu compliqué
    3) Translate !
    La méthode TRANSLATE, c'est simple :
    En gros, on prend la chaîne, on remplace tous les chiffres par des blancs, et s'il ne reste que des blancs à la fin, c'est un nombre.
    SELECT CASE WHEN trim(translate('1234,5', '1234567890,', ' ')) IS NULL THEN 1 ELSE 0 END as num
    , CASE WHEN trim(translate('robert', '1234567890,', ' ')) IS NULL THEN 1 ELSE 0 END as notnum
    FROM DUAL
    Compliqué de faire un translate puis un trim, alors que RTRIM ou LTRIM marche plus simplement (et plus rapidement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CASE WHEN rtrim('1234,5', '1234567890,') IS NULL THEN 1 ELSE 0 END as num
    , CASE WHEN rtrim('robert', '1234567890,') IS NULL THEN 1 ELSE 0 END as notnum
    FROM DUAL
    C'est un code que j'utilise souvent (sans la virgule)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

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

Discussions similaires

  1. [AC-2010] mettre une condition sur une chaine de caractères dans une requête sql
    Par freeman3869 dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/06/2015, 11h45
  2. tr et sed sur une chaine de caractére
    Par elflamby dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 13/09/2007, 16h20
  3. Test sur une chaine de caractéres
    Par Je-cherche-pfe dans le forum C#
    Réponses: 3
    Dernier message: 04/09/2007, 23h44
  4. prèlèvements sur une chaine de caractères
    Par Nicobp dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2006, 01h14
  5. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 13h21

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