এর মতো একটি ফাংশন ব্যবহার করুন:
CREATE function [dbo].[list_to_table] (@list varchar(4000))
returns @tab table (item varchar(100))
begin
if CHARINDEX(',',@list) = 0 or CHARINDEX(',',@list) is null
begin
insert into @tab (item) values (@list);
return;
end
declare @c_pos int;
declare @n_pos int;
declare @l_pos int;
set @c_pos = 0;
set @n_pos = CHARINDEX(',',@list,@c_pos);
while @n_pos > 0
begin
insert into @tab (item) values (SUBSTRING(@list,@c_pos+1,@n_pos - @c_pos-1));
set @c_pos = @n_pos;
set @l_pos = @n_pos;
set @n_pos = CHARINDEX(',',@list,@c_pos+1);
end;
insert into @tab (item) values (SUBSTRING(@list,@l_pos+1,4000));
return;
end;
পছন্দটি ব্যবহার না করে আপনি ফাংশনটি দিয়ে ফিরে আসা টেবিলের সাথে একটি অভ্যন্তরীণ যোগ দিন:
select * from table_1 where id in ('a','b','c')
হয়ে
select * from table_1 a inner join [dbo].[list_to_table] ('a,b,c') b on (a.id = b.item)
অনিবন্ধিত 1 এম রেকর্ড সারণীতে দ্বিতীয় সংস্করণটি প্রায় অর্ধেক সময় নিয়েছিল ...
চিয়ার্স