Bonjour,

Je ne suis pas très fort en mysql dés qu'on sort SELECT, INSERT, UPDATE.
J’essaie de concevoir une fonction explode() pour l'utiliser sur un champ d'une de mes tables.

voici mon essai :
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
 
DELIMITER $$
DROP PROCEDURE IF EXISTS `explode`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `explode`(  strDelimiter VARCHAR(255), 
                                                        strToExplode VARCHAR(255))
BEGIN
    SET @str = strToExplode;
    SET @endExplode = false;
 
    WHILE @endExplode = false DO
        #On récupére la valeur précédent la premiére virgule de la chaine.
        SET @subStr     = substring_index(@str, strDelimiter,  1);
        #On retire la premiére parti de la chaine et sa virgule.
        SET @str = substring(@str, locate(strDelimiter, @str)+1);
 
        SELECT @subStr ;
 
        IF 
            locate(strDelimiter, @str) = 0
        THEN
            SELECT @str ;
            SET @endExplode = true; 
        END IF;
    END WHILE;
END$$
 
#Exemple
CALL explode(',', '12,18,25,7,6,914')$$
Dans l'exemple que je donne à la fin la procédure me retourne
1 row(s) 12
1 row(s) 18
1 row(s) 25
etc...
Je voudrais qu'elle me retourne
6 row(s) 12 18 25 7 6 914

Mais comment faire ?