У меня есть таблица с тремя столбцами (State_id, Country_id, state_name). И у меня есть строка с разделителями строк, подобная этой (1 | 2 | ABC).
теперь Что я хочу делать всякий раз, когда я нажимаю триггер в это время, независимо от того, что этот ограничиваемый поток String преобразуется в имя столбца, например
Insert INTO tablename values (1,2,ABC);
каждый раз, когда у меня есть разграниченная строка с строкой с разным столбцом.maybe, ее 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, '')
Я пробовал, как this.but это не работает.
разделите строку, используя 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);