MySQL存储过程–>长字符串扯分

mysql存储过程–>长字符串扯分

DELIMITER $$  分隔符
USE`test`$$ — 
DROPPROCEDURE IF EXISTS `pro_split`$$  如果已经存在则删除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:这个是默认的字符串扯分规则是“,”,如果想变成灵活一些的,可以设置一个in 参数,在调用proc的时候代入即可。

 以上就是MySQL存储过程–>长字符串扯分的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享