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