TCS54321 Ответов: 1

Функция для возврата таблицы в mysql.


у меня есть процедура в MSSQL, в которой я вызываю функцию split.

почему процедура запроса выглядит так:-

select * from tbl_employee where employeeid in (SELECT Value FROM  dbo.FnSplit(@item_ids,','))


этот
dbo.FnSplit
функция дает несколько строк в одном столбце.

мне нужно сделать то же самое в базе данных mysql workbench. но mysql не поддерживает табличный тип данных. может ли кто-нибудь предложить мне решение?

Что я уже пробовал:

я пытаюсь сделать это с помощью XML, но не добиваюсь успеха,

1 Ответов

Рейтинг:
9

CHill60

Вы можете сделать "трюк" с помощью group_concat[^], динамический sql, вставка во временную таблицу.

drop temporary table if exists temp;
create temporary table temp( val char(255) );
set @sql = concat("insert into temp (val) values ('", replace(( select group_concat(@item_ids) as data), ",", "'),('"),"');");
prepare stmt1 from @sql;
execute stmt1;
(Адаптировано из примера на сайте MySQL :: Re: преобразование строки, разделенной запятыми, в строки[^] )

Вы бы тогда сделали
select * from tbl_employee where employeeid in (select val from temp)
или если бы Вы были уверены, что в списке @item_ids нет дубликатов
select * from tbl_employee inner join temp on val = employeeid


TCS54321

tnx.