Maison  >  Article  >  base de données  >  Procédure stockée MySQL -> fractionnement de chaînes longues

Procédure stockée MySQL -> fractionnement de chaînes longues

黄舟
黄舟original
2017-02-17 11:41:011254parcourir

Procédure stockée MySQL-->Séparation de chaîne longue

DELIMITER $$ -- délimiteur
UTILISER `test` $$ --
DROPPROCEDURE IF EXISTS `pro_split`$$ -- S'il existe déjà, supprimez proc

CREATE PROCEDURE `test`.`pro_split` (varchar rids)
BEGIN
         DECLAREpo INT DEFAULT 0;  
-- 
定义一个位置点
         DECLARErid VARCHAR(20) DEFAULT "";   
-- 
定义一个
rid
变量
         DECLARErid_tmp VARCHAR(20) DEFAULT "";
         SET po= LOCATE(",",rids);  
-- 
找到第一个
,
的位置点
         SET rid=LEFT(po-1,rids);  
 -- 
截取出第一个
rid
         SETrid_tmp=SUBSTR(rids,po+1);   
-- 
设置剩下还没有处理的
rids
长字符串


WHILEpo >0 DO    
-- 
开始循环处理
rids
长字符串
                  INSERTINTO b_tmp SELECT pid,rid;  
--
把截取出来的
rid
放入临时表中
                  SET po =LOCATE(",",rid_tmp); 
 -- 
获取未处理中的长字符串的
,
的第一个位置点
                  SET rid=LEFT(po-1,rid_tmp);   
--
取出每一个循环中截取出来的
rid
                  SETrid_tmp=SUBSTR(rid_tmp,po+1);  
 -- 
重新设置未处理的长字符串。
         ENDWHILE  ;

END$$

DELIMITER;



PS : La règle de fractionnement de chaîne par défaut est ",". Si vous souhaitez être plus flexible, vous pouvez définir un paramètre in et le remplacer lors de l'appel de proc.

Ce qui précède est le contenu de la procédure stockée MySQL -> fractionnement de chaînes longues Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). )!


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