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

Requêtes MySQL Discussion :

Diviser le contenu d'un champ et insérer le résultat dans un second champ


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Diviser le contenu d'un champ et insérer le résultat dans un second champ
    Bonjour à tous,

    je ne suis que débutant dans mysql, je vais peut être poser une question évidente a vos yeux, mais aux miens...
    Alors en fait j'ai une table TOTO avec 4 champs, toto1 toto2 toto3 et toto4
    Je n'ai que toto1 qui est rempli, il l'est par du texte du style : 1bonjour 2coucou 3aurevoir.
    Je souhaite pouvoir mettre 1bonjour dans toto2, 2coucou dans toto3 et 3aurevoir dans toto4.
    Comment puis je faire ?
    J'ai essayé de chercher du coté du substr de position et de locate, mais je n'arrive rien a en faire...
    En gros ce qu'on m'a expliqué c'est qu'il faut récupérer la position de 2 et celle de 1 en faire la soustraction et récupérer la chaine grace a cette taille "1bonjour" pour la poser dans toto2. Mais je n'arrive pas a faire des requete qui marchent.

    En espérant que vous pourrez m'aider, merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 890
    Points : 53 122
    Points
    53 122
    Billets dans le blog
    6
    Par défaut
    Créez une table des nombres comportant les nombres depuis 1 jusqu'à...

    Exemple :
    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
    CREATE TABLE T_NUM (I INT PRIMARY KEY);
    INSERT INTO T_NUM VALUES (0);
    INSERT INTO T_NUM VALUES (1);
    INSERT INTO T_NUM VALUES (2);
    INSERT INTO T_NUM VALUES (3);
    INSERT INTO T_NUM VALUES (4);
    INSERT INTO T_NUM VALUES (5);
    INSERT INTO T_NUM VALUES (6);
    INSERT INTO T_NUM VALUES (7);
    INSERT INTO T_NUM VALUES (8);
    INSERT INTO T_NUM VALUES (9);
    INSERT INTO T_NUM 
    SELECT T1.I + T2.I * 10 + T3.I * 100+ T4.I * 1000 
    FROM   T_NUM AS T1
           CROSS JOIN T_NUM AS T2
           CROSS JOIN T_NUM AS T3
           CROSS JOIN T_NUM AS T4
    WHERE T1.I + T2.I * 10 + T3.I * 100+ T4.I * 1000 > 9;
    A partir de là, cela va devenir plus facile avec la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT toto1, N.I, SUBSTRING(toto1, N.I, CHARACTER_LENGTH(toto1) - N.i) AS EXTRAIT
    FROM   TOTO AS T
           INNER JOIN T_NUM AS N
                 ON SUBSTRING(toto1, N.I, 1) = ' '
    Néanmoins si vous voulez la suite, merci de me communiquer le DDL de votre table ainsi qu'un jeu d'essais sous forme INSERT.

    NOTA : cela aurait été très facile si MySQL acceptait le CTE et donc les requêtes récursives telle que la norme SQL l'a prévue !
    Par exemple à l'aide de la requête suivante : http://sqlpro.developpez.com/cours/s...ecursives/#LIX

    A +

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci bcp pour votre réponse, je vais essayer de la comprendre et de voir si j'arrive a faire quelque chose avec

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Bon bein en fait j'ai trouvé (du moins mon chef est venu a ma rescousse :p)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update TOTO 
    set toto2 = SUBSTR(toto1, LOCATE('1', toto1) +1, LOCATE('2', toto1) -LOCATE('1', toto1) -1)
    le truc super simple... mais n'y connaissant pas grand chose... bah.. je luttais, en tout cas c'est excellent ce qu'on peut faire avec mysql qd on gaze

    merci pour ta réponse tout de même

  5. #5
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    J'ai quand même de gros doutes quant à la qualité de l'analyse qui a conduit à cette problématique.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/05/2009, 20h42
  2. [MySQL] Insérer un résultat dans la base de données
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/01/2009, 10h32
  3. insérer un résultat dans un champ
    Par jeanfi77 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 12/03/2007, 17h21
  4. insérer un 'NULL' dans un champ de type DATE
    Par 84mickael dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/06/2005, 09h23
  5. Comment insérer un espace dans un champ
    Par davyd dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/03/2005, 10h00

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