Maison > base de données > tutoriel mysql > Comment extraire des valeurs de chaînes séparées par des virgules dans MySQL ?

Comment extraire des valeurs de chaînes séparées par des virgules dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-11-30 14:01:11
original
796 Les gens l'ont consulté

How to Extract Values from Comma-Separated Strings in MySQL?

Extraction de chaîne MySQL à partir de valeurs séparées par des virgules

Dans MySQL, il est souvent nécessaire d'extraire des valeurs individuelles d'une chaîne contenant plusieurs valeurs séparés par des virgules. Cela pose un défi car MySQL ne fournit pas nativement de fonction de division de chaîne.

Pour résoudre ce problème, nous pouvons exploiter une procédure stockée pour extraire les valeurs de manière itérative. Voici comment :

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

Échantillon de données :

Col1 Col2
1 a,b,c
2 d,e

Résultat :

Col1 Col2
1 a
1 b
1 c
2 d
2 e

Utilisation :

Pour utiliser cette solution, créez une table nommée BadTable avec les données d'origine et une nouvelle table nommée GoodTable pour stocker les valeurs extraites. Ensuite, exécutez les commandes suivantes :

CALL BadTableToGoodTable();
SELECT * FROM GoodTable;
Copier après la connexion

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