Maison >base de données >tutoriel mysql >Comment la fonction strSplit de MySQL peut-elle transformer des chaînes séparées par des virgules en plusieurs lignes ?
Diviser des chaînes dans MySQL avec la fonction strSplit
Contrairement à la question du fil de discussion en double, cette question demande spécifiquement comment diviser un élément séparé par des virgules. chaîne de colonnes en plusieurs lignes. Pour y parvenir, MySQL fournit une procédure stockée polyvalente qui exploite la fonction strSplit().
La fonction strSplit() décompose une chaîne donnée (x) en fonction d'un délimiteur (delim) et d'une position (pos) spécifiés. . Pour ce faire, il extrait la sous-chaîne de la position pos de la chaîne délimitée, remplace le délimiteur par une chaîne vide et renvoie la sous-chaîne résultante.
Pour illustrer, considérons la table d'entrée :
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
Pour transformer cela en sortie souhaitée :
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
Nous définissons la procédure stockée BadTableToGoodTable() comme suit :
CREATE PROCEDURE BadTableToGoodTable() BEGIN DECLARE i INTEGER; SET i = 1; REPEAT INSERT INTO GoodTable (col1, col2) SELECT col1, strSplit(col2, ',', i) FROM BadTable WHERE strSplit(col2, ',', i) IS NOT NULL; SET i = i + 1; UNTIL ROW_COUNT() = 0 END REPEAT; END $$
Ici, nous parcourons chaque caractère de la chaîne séparée par des virgules de Col2 à l'aide de l'instruction REPEAT, en extrayant la sous-chaîne à l'aide de strSplit() et en l'insérant dans une nouvelle table (GoodTable).
En suivant ces étapes, nous pouvons diviser efficacement les chaînes dans MySQL, ce qui nous permet de remodeler les colonnes séparées par des virgules en données plus normalisées. structures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!