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 ?

Comment la fonction strSplit de MySQL peut-elle transformer des chaînes séparées par des virgules en plusieurs lignes ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 15:39:11632parcourir

How Can MySQL's strSplit Function Transform Comma-Separated Strings into Multiple Rows?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn