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 分享