MYSQL——Split字符串并且插入值

举报
清雨小竹 发表于 2022/09/25 02:03:23 2022/09/25
【摘要】 Demo BEGIN #添加项目资料 3,1,1,2,'1;2' DECLARE tdocId int;#声明一个输出值 DECLARE s int default 0; #声明一个判断游标到最后的检测值 DECLARE tyoub CURSOR FOR SELECT `value` from zzsplittab...

Demo

BEGIN
	#添加项目资料 3,1,1,2,'1;2'
  DECLARE tdocId int;#声明一个输出值

  DECLARE s int default 0; #声明一个判断游标到最后的检测值
  DECLARE tyoub CURSOR FOR SELECT `value` from zzsplittable;#设置一个游标
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1;  #设置游标到最后的条件
  
  call zzSplist(i_docIds,';');#调取函数分割字符串

  OPEN tyoub; #打开游标开始遍历
  FETCH tyoub INTO tdocId;   
  while s <> 1 do  
     INSERT INTO oa_doc_pro(projectid,docid) VALUES(i_proId,tdocId); #输出值的操作
 
     FETCH tyoub INTO tdocId; #游标到下一个
  end while;  
  CLOSE tyoub; #关闭游标

END


zzSplit存储过程

CREATE  PROCEDURE `zzSplist`(inputstring varchar(1000),
    delim char(1))
begin
    declare strlen int DEFAULT length(inputstring);
    declare last_index int DEFAULT 0;
    declare cur_index int DEFAULT 1;
    declare cur_char VARCHAR(200);
    declare len int;
    drop temporary table if exists zzsplittable;
    create TEMPORARY table zzsplittable(
        value VARCHAR(20)
    ) ;
    WHILE(cur_index<=strlen) DO    
    begin
        if substring(inputstring from cur_index for 1)=delim or cur_index=strlen then
            set len=cur_index-last_index-1;
            if cur_index=strlen then
               set len=len+1;
            end if;
            insert into zzsplittable(`value`)values(substring(inputstring from (last_index+1) for len));
            set last_index=cur_index;
        end if;
        set cur_index=cur_index+1;
    END;
    end while;
end



文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/40377951

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。