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

0

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

  • 0
    Это для Oracle или MySQL? Из того синтаксиса, который вы попробовали, он выглядит как MySQL, и в этом случае тег Oracle должен идти во избежание путаницы.
  • 0
    это mysql.
Показать ещё 3 комментария
Теги:
database
mysql-workbench
triggers

1 ответ

0

разделите строку, используя 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);
  • 0
    Что если каждый раз, когда у меня есть отдельная строка с разделителями трубы? Как мне сделать этот динамический запрос для определенного числа строк
  • 0
    Вы можете использовать функцию find_in_set для таких условий и на основе количества вы можете генерировать динамический запрос
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню