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). )!