Преобразовать '1 | 2 | India' в эту строку с разделителями в виде строки, заданной в качестве столбца. - PullRequest
0 голосов
/ 28 мая 2018

У меня есть таблица с тремя столбцами (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;

END

Я сделал SPLIT_STR, который делит значение на единицу

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

Я пытался вот так. Но это не работает.

1 Ответ

0 голосов
/ 28 мая 2018

разделите вашу строку, используя 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);
...