27,580
社区成员
发帖
与我相关
我的任务
分享
DECLARE @s VARCHAR(500) ='123,456,789'
;WITH a(id,OrderID) AS (
SELECT 1, 123 UNION
SELECT 2, 456 UNION
SELECT 3, 235 UNION
SELECT 4, 1234
)
SELECT *
FROM a where CHARINDEX(','+convert(varchar,a.OrderID)+',',','+@s+',')>0
var
i:integer
cond, sql: string;
begin
for i := 0 to length( idlist) do
cond := cond + quotedstr(idlist[i]) + ',';
cond := copy(cond,1,length(cond) - 1);
sql := 'select * from xxxx where id in (' + cond + ')';
end;
--执行一个 for 循环,把所有的值都拼接成一个字符串,
-- 大概伪代码如下
x_list = "";
for x in list
begin
x_list += x.id + ",";
end
x_list = substring(x_list,0,x_list.length -1);
sql = "select ..... where x in (" + x_list + ")";