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

Développement SQL Server Discussion :

[ extraire 6 caractères variable après une chaine de caractère fixe ]


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Points : 32
    Points
    32
    Par défaut [ extraire 6 caractères variable après une chaine de caractère fixe ]
    Bonjour,

    Mon problème est le suivant :

    Tout les enregistrements d'une colonne contiennent une chaine de caractère (une occurrence par enregistrement) : '%la valeur maximale est%'
    mon objectif est de pouvoir extraire uniquement les 6 prochains caractères après cette chaine.
    exemple :

    enregistrement 1 : %la valeur maximale est 452178% >>> output : 452178
    enregistrement 2 : %la valeur maximale est 852456% >>> output : 852456
    ...

    j'ai essayé de faire un where like '%la valeur maximale est ______%' >>> ______ = les 6 caractères, mais ça passe pas.

    Merci bcp et bonne journée.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 22
    Points
    22
    Par défaut
    --> Exemple de ta table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT '%la valeur maximale est 111111%' as mavaleur
    INTO	#MATABLE
    UNION
    SELECT '%la valeur maximale est 222222%' as mavaleur
     
    UNION
    SELECT '%la valeur maximale est 333333%' as mavaleur

    --> Solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select REPLACE(Replace(mavaleur,'%',''),'la valeur maximale est ','')
    from #MATABLE

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci de votre réponse, mais : pour votre solution, je mettrai quoi à la place de "mavaleur" :

    select REPLACE(Replace(mavaleur,'%',''),'la valeur maximale est ','')
    from #MATABLE

    vu que la valeur que je veux extraire est variable .

    merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    en plus, je souhaiterai uniquement extraire ces valeurs et non les remplacer .

    merci

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 22
    Points
    22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    --> Exemple de ta table
    SELECT '%la valeur maximale est 111111%' as mavaleur
    INTO	#MATABLE
    UNION
    SELECT '%la valeur maximale est 222222%' as mavaleur
     
    UNION
    SELECT '%la valeur maximale est 333333%' as mavaleur
     
     
    --> Solution
    select MavaleurExtraite = REPLACE(Replace(mavaleur,'%',''),'la valeur maximale est ',''),mavaleur
    from #MATABLE
    Avez vous testé ma solution dans votre "requeteur"? (un copier/collé tel quel et vous verrez que la solution est évidente)

    Votre question n'est pas très claire: "vu que la valeur que je veux extraire est variable " ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    chaque enregistrement de ma colonne contient :

    enregistrement 1 : %la valeur maximale est 4521789999% >>> output : 452178
    enregistrement 2 : %la valeur maximale est 8524567777% >>> output : 852456
    enregistrement 3 : %la valeur maximale est 4521787777% >>> output : 452178
    enregistrement 4 : %la valeur maximale est 78978974444% >>> output : 789789
    enregistrement 5 : %la valeur maximale est 456456124578% >>> output : 456456
    enregistrement 6 : %la valeur maximale est 1231234554545% >>> output : 123123
    ...

    ce que je veux extraire, c le output.

    donc, mon objectif est de pouvoir extraire uniquement les 6 prochains caractères après la chaine de caractère : %la valeur maximale est%

    j’espère que je suis clair.

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par Rafter Voir le message
    mon objectif est de pouvoir extraire uniquement les 6 prochains caractères après cette chaine.
    Dans la mesure où la chaine en question fait 25 caractères, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT SUBSTRING(LaColonne, 25, 6) AS Resultat
    FROM LaTable

    Dans les réponses de Maduser, "mavaleur" est simplement un nom de colonne et sa solution fonctionne. Il vous suffisait de copier coller son code et de l’exécuter pour comprendre...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Points : 22
    Points
    22
    Par défaut
    Là on ne peut faire plus ==>

    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
    36
    37
     
    set nocount on
    --> Exemple de ta table
    SELECT '%la valeur maximale est 111111%' as mavaleur
    INTO	#MATABLE
    UNION
    SELECT '%la valeur maximale est 222222%' as mavaleur
     
    UNION
    SELECT '%la valeur maximale est 333333%' as mavaleur
     
     
    --> Solution
     
    DECLARE		@MY_OUTPUT AS VARCHAR(100),@MY_VALUE AS VARCHAR(100)
    DECLARE MY_CURSOR CURSOR FOR
    select MavaleurExtraite = REPLACE(Replace(mavaleur,'%',''),'la valeur maximale est ',''),mavaleur
    from #MATABLE
     
    OPEN MY_CURSOR
     
    FETCH FROM MY_CURSOR
    INTO @MY_OUTPUT, @MY_VALUE;
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
     
       -- Concatenate and display the current values in the variables.
       PRINT ' output : ' + @MY_OUTPUT
     
       -- This is executed as long as the previous fetch succeeds.
       FETCH NEXT FROM MY_CURSOR
    INTO @MY_OUTPUT, @MY_VALUE;
    END
     
    CLOSE MY_CURSOR;
    DEALLOCATE  MY_CURSOR;

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    re bonjour,

    Je me suis peut etre mal exprimé,

    ma colonne contient les infos suivnates :

    dfffffffffffffffffffffffffffffffffff la valeur maximale est 789456 tttttttttttttttttttttttttttttttttttttttttttttt
    hhhhhhhhhhh la valeur maximale est 123456 ttttttttttttttttttt
    yyy la valeur maximale est 741852 ggggggggggggggggggggggggggggggggggggggggggg

    - la position de la chaine de caractère "la valeur maximale est" est aléatoire
    - les 6 caractères qui se trouve apres cette chaine "la valeur maximale est" sont eux aussi aléatoire

    l'algorithme de ma solution que j'arrive pas a traduire en requete sql est le suivant :

    1- extraire la chaine de caractère
    2- puis extraire les 6 caractères qui se trouve juste apres cette chaine "la valeur maximale est".

    merci bcp

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Alors il suffit de trouver où se trouve la chaine avec CHARINDEX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT SUBSTRING(LaColonne, CHARINDEX('la valeur maximale est'  , LaColonne)+ 23, 6) AS Resultat
    FROM LaTable

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    c'est parfait.
    ca repond parfaitement à ma question.

    merci bcp. et bonne journée

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

Discussions similaires

  1. [Oracle] Requête avec une variable contenant une chaine de caractères accentué non trouvé
    Par chris0938 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 07/01/2011, 21h23
  2. Réponses: 5
    Dernier message: 08/11/2010, 17h50
  3. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  4. [C#] Une variable dans une chaine de caractères...
    Par GlorfindelHebril dans le forum Windows Forms
    Réponses: 9
    Dernier message: 31/03/2005, 14h30

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