如何将IN子句与用户定义的列表一起使用

时间:2016-02-19 03:18:50

标签: sql sql-server sql-server-2008

我有一个问题:

Select sum(net_sales)
from Sales_tb
where Store_number in (@list)

显然我不能在in子句中使用参数。

我需要通过vb.net程序传递@list。

一个例子是:'1,5,6'

如何实现这一点,因为参数实际上不是一个选项?

2 个答案:

答案 0 :(得分:2)

如果您传递的是VARCHAR逗号分隔列表,那么您需要一个字符串拆分器。 Aaron Bertrand编写了一个article来比较分割字符串的不同方法。

SELECT SUM(net_sales)
FROM Sales_tb
WHERE 
    Store_number IN (SELECT Item FROM dbo.SplitStrings(@list, ','))

答案 1 :(得分:0)

传递一个表,而不是一个字符串。 SQL Server 2008具有表值参数。

Table-Valued Parameters

Use Table-Valued Parameters (Database Engine)