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

MySQL Discussion :

Position des caractères dans un champ


Sujet :

MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2016
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Janvier 2016
    Messages : 95
    Points : 61
    Points
    61
    Par défaut Position des caractères dans un champ
    Bonjour, je recherche à récuperer toutes les positions d'un caracteres dans un champs .
    exemple
    champ test : 01001100101
    on doit donc trouver : 2;5;6;9;11

    on peut mettre les varleurs dans une table temporaire si cela est plus simple.

    cdt,

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 377
    Points : 39 852
    Points
    39 852
    Billets dans le blog
    9
    Par défaut
    Si vous avec MySQL 8.0 et donc accès aux requêtes récursives :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with T1 (T1sec, T1pos) as
        (select 0, locate('1', '01001100101', 1)
         union all
         select T1seq+1, locate('1', '01001100101', T1pos+1)
         from T1
         where T1pos < 10
         )
    select * from T1
    ;

  3. #3
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2016
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Janvier 2016
    Messages : 95
    Points : 61
    Points
    61
    Par défaut résolu avec des while et un curseur
    j'ai résolu mon soucis avec un while et un curseur :
    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
     
    OPEN monCurseurCible;
    	cible_loop: LOOP
    		FETCH monCurseurCible INTO var_cible, var_ref;
     
    		IF done = 1 THEN
    			LEAVE cible_loop;
    		END IF;
     
    		-- on calcule la 1er position
    		SET var_position = LOCATE(1,var_cible) ;
    		-- on boucle sur toutes les caractères de cible pour lire
    		WHILE var_position >= 1    DO
     
    			INSERT INTO test_position ( ref ,position_regate ) VALUES (  var_ref, var_position ) ;
    			SET var_position = LOCATE(1,var_cible,var_position+1) ;
     
    		END WHILE ;
     
    	END LOOP;
    	CLOSE monCurseurCible;
    Il me reste à mettre tout cela en forme pur que cela soit effectuer via un shell

    une autre demande sur le forum .

    cdt
    stephane

Discussions similaires

  1. [AC-2003] Supprimer des caractères dans un champ de requete
    Par facteur dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/07/2013, 14h00
  2. Réponses: 2
    Dernier message: 03/07/2012, 20h21
  3. Réponses: 2
    Dernier message: 28/02/2011, 03h19
  4. [AC-2007] Supprimer des caractères dans un champ.
    Par jmlabatut dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/12/2009, 14h09
  5. Réponses: 2
    Dernier message: 27/08/2008, 10h13

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