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!