将“1 | 2 | india”此管道分隔字符串设置为列

iezvtpos  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(329)

我有三列的表(state|id,country|id,state|name),还有像这样的管道分隔字符串(1 | 2 | )。
现在我想做什么,每当我点击触发器在那个时候,无论这个管道分隔字符串转换成列名一样

Insert INTO tablename values (1,2,ABC);

每次我都有不同的管道分隔字符串和不同的列。可能是4或更多。

BEGIN
DECLARE a INT Default 0 ;
DECLARE str VARCHAR(255);
simple_loop: LOOP
    SET a=a+1; 
    SET str=SPLIT_STR(new.remarks,"|",a); 
        IF str='' THEN
            LEAVE simple_loop; 
        END IF;
insert into new.tablename values (str);
END LOOP simple_loop;

结束
我做了split\u str,它将值除以一

RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
   LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
   delim, '')

我试过这样做,但不管用。

ewm0tg9j

ewm0tg9j1#

使用子字符串索引从分隔符位置拆分字符串,如下所示:

Insert INTO tablename
 select substring_index('1|2|ABC','|',1),
        substring_index(substring_index('1|2|ABC','|',2),'|',-1),
        substring_index('1|2|ABC','|',-1);

相关问题