Maison >base de données >tutoriel mysql >Les expressions régulières peuvent-elles analyser des chaînes séparées par des virgules dans des tables temporaires MySQL ?

Les expressions régulières peuvent-elles analyser des chaînes séparées par des virgules dans des tables temporaires MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 03:24:17850parcourir

Can Regular Expressions Parse Comma-Separated Strings into MySQL Temporary Tables?

Utilisation de RegEx pour analyser des chaînes séparées par des virgules dans des tables temporaires MySQL

Question :

Est-il possible d'analyser un chaîne séparée par des virgules dans une table MySQL temporaire en utilisant la méthode régulière expressions ?

Réponse :

Bien que MySQL ne dispose pas d'une fonction intégrée pour le fractionnement des chaînes, diverses solutions de contournement existent. Une approche implique des fonctions personnalisées et des mécanismes de boucle pour décomposer la chaîne en ses composants.

Fonction personnalisée pour le fractionnement de chaîne :

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, '');

Boucle et incrémentation la fonction personnalisé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;
         #Do Inserts into temp table here with str going into the row
         insert into my_temp_table values (str);
   END LOOP simple_loop;
END $$

Cette approche vous permet d'analyser la chaîne divisée et d'insérer dynamiquement les composants dans une table temporaire utilisant les capacités de bouclage de 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