Diviser des chaînes séparées par des virgules dans une table temporaire dans MySQL
En utilisant MySQL, il n'est pas possible de diviser directement une chaîne séparée par des virgules dans une table temporaire à l'aide d'expressions régulières. En effet, MySQL ne dispose pas d'une fonction de fractionnement de chaîne intégrée.
Solutions de contournement
Le fractionnement direct n'étant pas réalisable, vous pouvez utiliser diverses méthodes de contournement :
1. Fractionnement à l'aide de fonctions personnalisées
Vous pouvez créer une fonction personnalisée dans MySQL pour diviser la chaîne en valeurs individuelles. Par exemple :
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, '');
2. Utiliser une boucle
Appelez la fonction personnalisée dans une boucle et incrémentez la position jusqu'à ce qu'une valeur vide soit renvoyée :
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; # Insert into temp table here with str going into the row insert into my_temp_table values (str); END LOOP simple_loop; END $$
3. Intégration du langage de script
Vous pouvez également utiliser un langage de script tel que PHP pour diviser la chaîne et effectuer les opérations nécessaires.
Conclusion
Bien que MySQL ne dispose pas d'une fonction de chaîne divisée dédiée, ces méthodes de contournement vous permettent d'analyser efficacement les chaînes séparées par des virgules dans des tables temporaires. Choisissez l'approche qui correspond le mieux à vos exigences et préférences.
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!