首页 > 解决方案 > 在 where 条件下声明 varchar

问题描述

我想将声明的变量传递到哪里。

例如我有一张桌子#test

ID Amount
1  100
2  50
3  20
4  40 
5  150

我想做这样的事情:

declare @id varchar(11) = '(1, 4, 5)'
select * from #test where IDNumber  in @id

我怎样才能做到这一点?

标签: sqlwheredeclare

解决方案


如评论中所述,您最好使用另一种数据类型。

但是如果你真的想像你的例子那样做,你可以使用动态 sql:

DECLARE @ids VARCHAR(32) = '1,4,5';
DECLARE @result TABLE (ID INT, Amount INT);

DECLARE @sql NVARCHAR(MAX) = 
N'  SELECT ID, Amount
    FROM #test
    WHERE ID IN (' + @ids + ');';

PRINT @sql;

INSERT @result
EXEC(@sql);

SELECT*
FROM @result;

如果您需要在脚本中再次使用结果,则将结果放入表变量中,如果不需要,您可以只EXEC使用 sql


推荐阅读