我有三列(State_id,Country_id,state_name(的表。美国广播公司(。
现在每当我点击触发器时我想做什么,无论这个管道分隔的字符串是什么 转换为列名,例如
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_STR将值拆分为一个
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '')
我已经尝试过这样,但它不起作用。
使用分隔符位置的substring_index拆分字符串,如下所示:
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);