mysql 逗号分隔 多行_MySQL:将逗号分隔的列表分成多行

5e8fa6decd2e7d656d9a782322394ae9.png

牛魔王的故事

MySQL没有临时表重用,并且函数不返回行。我在Stack Overflow中找不到任何东西可以将csv整数字符串转换为行,因此我在MySQL中编写了自己的代码。DELIMITER $$DROP PROCEDURE IF EXISTS str_split $$CREATE PROCEDURE str_split(IN str VARCHAR(4000),IN delim varchar(1))beginDECLARE delimIdx int default 0;DECLARE charIdx int default 1;DECLARE rest_str varchar(4000) default '';DECLARE store_str varchar(4000) default '';create TEMPORARY table IF NOT EXISTS ids as (select  parent_item_id from list_field where 1=0);truncate table ids;set @rest_str = str;set  @delimIdx = LOCATE(delim,@rest_str);set @charIdx = 1;set @store_str = SUBSTRING(@rest_str,@charIdx,@delimIdx-1);set @rest_str = SUBSTRING(@rest_str from @delimIdx+1);if length(trim(@store_str)) = 0   then    set @store_str = @rest_str;end if;    INSERT INTO idsSELECT (@store_str + 0);WHILE @delimIdx <> 0 DO    set  @delimIdx = LOCATE(delim,@rest_str);    set @charIdx = 1;    set @store_str = SUBSTRING(@rest_str,@charIdx,@delimIdx-1);    set @rest_str = SUBSTRING(@rest_str from @delimIdx+1);select @store_str;    if length(trim(@store_str)) = 0   then        set @store_str = @rest_str;    end if;        INSERT INTO ids(parent_item_id)    SELECT (@store_str + 0);END WHILE;select parent_item_id from ids;end$$DELIMITER ;call str_split('1,2,10,13,14',',')如果不使用整数,则还需要转换为其他类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值