【发布时间】:2018-11-06 17:41:39
【问题描述】:
我有一个三列的表(State_id、Country_id、state_name)。我有这样的管道分隔字符串(1|2|ABC)。
现在每当我点击触发器时我想做什么,无论这个管道分隔的字符串是转换为列名,如
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, '')
我试过这样,但它不起作用。
【问题讨论】:
-
这是用于 Oracle 还是 MySQL?从您尝试过的语法来看,它看起来像 MySQL,在这种情况下,Oracle 标记需要去避免混淆。
-
这是mysql。
-
啊,好的。我只知道甲骨文。
-
什么split_str函数不起作用,语法错误,插入new.tablename?
-
这种问题隐约表明设计不佳
标签: mysql database triggers mysql-workbench