Maison > base de données > tutoriel mysql > Comment puis-je diviser les valeurs séparées par des virgules dans une colonne de chaîne MySQL en plusieurs lignes ?

Comment puis-je diviser les valeurs séparées par des virgules dans une colonne de chaîne MySQL en plusieurs lignes ?

Patricia Arquette
Libérer: 2024-11-30 09:29:14
original
709 Les gens l'ont consulté

How Can I Split Comma-Separated Values in a MySQL String Column into Multiple Rows?

Mysql String Split : développer les lignes avec des valeurs séparées par des virgules

Dans cette question, l'utilisateur cherche une solution pour convertir une table en contenant une colonne de chaîne avec des valeurs séparées par des virgules dans un nouveau tableau avec plusieurs lignes, en divisant les valeurs par des virgules. Bien que la question prétende ne pas être une copie exacte d'un fil de discussion existant, elle partage des similitudes.

Pour répondre à cette exigence, une procédure stockée peut être utilisée :

DELIMITER $$

CREATE FUNCTION strSplit(x VARCHAR(65000), delim VARCHAR(12), pos INTEGER) 
RETURNS VARCHAR(65000)
BEGIN
  DECLARE output VARCHAR(65000);
  SET output = REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos)
                 , LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1)
                 , delim
                 , '');
  IF output = '' THEN SET output = null; END IF;
  RETURN output;
END $$


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 $$

DELIMITER ;
Copier après la connexion

Cette procédure stockée initialise une variable entière i. Il parcourt chaque valeur de chaîne dans la colonne col2, en utilisant la fonction strSplit pour extraire la sous-chaîne correspondante à la position i. La sous-chaîne extraite représente l'une des valeurs séparées par des virgules.

La procédure continue, en incrémentant i à chaque itération, jusqu'à ce qu'il n'y ait plus de sous-chaînes non nulles. Cela garantit que toutes les valeurs séparées par des virgules sont divisées et insérées dans la nouvelle table.

En résumé, cette procédure stockée fournit une solution robuste pour convertir une table avec des valeurs séparées par des virgules en une table avec plusieurs lignes, ce qui rend il est plus facile de manipuler et d'analyser les données.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal