Maison >base de données >tutoriel mysql >Comment diviser une chaîne séparée par des virgules dans une table temporaire MySQL à l'aide d'expressions régulières ?

Comment diviser une chaîne séparée par des virgules dans une table temporaire MySQL à l'aide d'expressions régulières ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 21:38:13167parcourir

How to Split a Comma-Separated String into a MySQL Temp Table Using Regular Expressions?

MySQL divise une chaîne séparée par des virgules dans une table temporaire à l'aide de RegEx

MySQL ne dispose pas d'une fonction de chaîne divisée dédiée, ce qui nécessite des approches alternatives. Une méthode consiste à émuler une division en itérant sur une fonction personnalisée.

Fonction de division personnalisée

La fonction suivante divise une chaîne x délimitée par un délimiteur à la position pos :

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

Bouclage et insertion dans une table temporaire

Pour parcourez la chaîne divisée et insérez-la dans une table temporaire, utilisez une instruction LOOP :

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

Remarque : Utiliser un langage de script comme PHP pour de telles tâches peut être plus efficace que de s'appuyer uniquement sur sur MySQL.

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