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

PL/SQL Oracle Discussion :

Extraction une sous chaine


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 284
    Points : 66
    Points
    66
    Par défaut Extraction une sous chaine
    Bonjour,

    Je veux extraire des dates à partir d'une chaine de caractère.
    voila un ex de ma chaine :
    "debut: Paiement : 26/01/09 Detachement. : 26/01/09 pour le produit X"
    mon but est d'extraire les deux dates : 26/01/09 et 26/01/09.
    Ma chaine peut contenir une seule date
    "debut: Paiement : 26/01/09 pour le produit Y"

    je suis sous Oarcle 9i
    Merci

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Instr( chaîne, '/') vous donnera la position du premier caractère / rencontré

    instr( chaîne, '/', x) vous donnera la position du premier caractère / à partir de la position x.
    Donc vous pouvez trouver la position des 3 oui six caratères / et extraire les données environnantes avec la fonction Substr()

    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
    DECLARE
      LN$Pos  PLS_INTEGER;
      LC$Ch   VARCHAR2(100) := 'xxxx 10/10/2009 yyyy 31/10/2009 zzz' ;
    BEGIN
      -- date 1  ? --
      LN$Pos := INSTR( LC$Ch, '/'); 
      IF LN$Pos > 0 THEN
        DBMS_OUTPUT.PUT_LINE('d1:' || SUBSTR( LC$Ch, LN$Pos -2, 10 )) ;
      END IF ;
      -- date 2 ? --
      LN$Pos := INSTR( LC$Ch, '/', LN$Pos+10);
      IF LN$Pos > 0 THEN
        DBMS_OUTPUT.PUT_LINE('d2:' || SUBSTR( LC$Ch, LN$Pos -2, 10 )) ;
      END IF ;  
    END;
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

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

Discussions similaires

  1. Extraction d'une sous-chaine à partir d'une chaine principale
    Par gazere dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/06/2007, 04h08
  2. Extraction d'une sous-chaine
    Par adurand dans le forum Linux
    Réponses: 2
    Dernier message: 17/03/2007, 17h35
  3. Réponses: 7
    Dernier message: 06/09/2006, 15h10
  4. [RegEx] extraction d'une sous chaine
    Par zulkifli dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2006, 13h27
  5. Extraction de sous-chaine dans une chaine
    Par ma2th dans le forum C
    Réponses: 7
    Dernier message: 07/05/2004, 12h42

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