Maison >base de données >tutoriel mysql >MySQL peut-il diviser des chaînes séparées par des virgules dans une table temporaire ?

MySQL peut-il diviser des chaînes séparées par des virgules dans une table temporaire ?

DDD
DDDoriginal
2024-12-08 19:12:161000parcourir

Can MySQL Split Comma-Separated Strings into a Temporary Table?

MySQL peut-il diviser une chaîne séparée par des virgules dans une table temporaire ?

Le fractionnement de chaînes séparées par des virgules dans une table temporaire est une tâche courante dans la manipulation de données. . Bien que MySQL ne dispose pas d'une fonction intégrée pour cette tâche, elle peut être réalisée en utilisant des méthodes alternatives.

Une approche consiste à créer une fonction définie par l'utilisateur qui implémente le fractionnement de chaînes. La fonction SPLIT_STR de la réponse fournie peut être utilisée à cette fin. Il extrait de manière itérative les sous-chaînes en fonction d'un délimiteur et d'une position, renvoyant une chaîne vide lorsqu'aucune correspondance n'est trouvée.

Pour parcourir la chaîne divisée et remplir une table temporaire, une boucle peut être utilisée. Une boucle FOR peut être utilisée pour appeler progressivement la fonction SPLIT_STR, et les résultats peuvent être insérés dans la table temporaire à l'aide de requêtes INSERT.

Cependant, il est important de noter que cette approche nécessite un codage personnalisé et une connaissance de la boucle MySQL. syntaxe. Une solution alternative serait d'utiliser un langage de script tel que PHP ou Python pour effectuer le fractionnement de la chaîne et insérer les résultats dans la table temporaire.

Voici le code d'une boucle MySQL qui parcourt la chaîne divisée et insère valeurs dans une table temporaire :

DELIMITER $$

CREATE PROCEDURE ABC(fullstr)

BEGIN
   DECLARE a INT Default 0 ;
   DECLARE str VARCHAR(255);
   simple_loop: LOOP
      SET a=a+1;
      SET str=SPLIT_STR(fullstr,"|",a);
      IF str='' THEN
         LEAVE simple_loop;
      END IF;
      #Do Inserts into temp table here with str going into the row
      insert into my_temp_table values (str);
   END LOOP simple_loop;
END $$

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