MemSQL - заполнить таблицу, используя отдельное строковое значение - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно передать список значений в процедуру MemSQL.Есть ли способ преобразования целочисленных значений, разделенных запятыми, из входной строки в таблицу.

1 Ответ

0 голосов
/ 26 октября 2018

MemSQL еще не имеет функции, подобной функции Python string split, которая преобразует строку с разделителями в массив строк.В MemSQL 6.5 лучшим способом было бы сделать что-то подобное, используя встроенную функцию locate.

delimiter //
create or replace procedure insert_split_string(input text, d text) as
declare
    position int = 1;
    newPosition int = -1; 
begin
    while newPosition != 0 loop
        newPosition = locate(d, input, position);
        if newPosition != 0 then
            insert into t values(substring(input, position, newPosition - position));
            position = newPosition + 1;
        end if; 
    end loop;

    -- Add the last delimited element
    insert into t values(substring_index(input, d, -1));
end //
delimiter ;

create table t(i int);
call insert_split_string("1,2,3,4,5", ",");
select * from t;
...