在Where语句的1个参数中使用多个值

时间:2018-06-12 15:49:38

标签: sql-server vb.net

我正在使用查询使用以下查询填充TableAdapter

SELECT Key1, Character01
FROM Ice.UD08
WHERE (Character01 IN (@MPS))

如果我只传递1个值作为参数(例如1155),这可以正常工作,如下面的代码所示

SELECT
    CASE grade
        CASE "1045"
            grade = "1155"
END SELECT 
Me.UD08TableAdapter.FillBy(Me.Epicor10DataSet.UD08, grade)

如果我尝试修改下面的代码以包含多个值,如下例所示,我没有结果

SELECT
    CASE grade
        CASE "1045"
            grade = "1155,1160,1165"
END SELECT
Me.UD08TableAdapter.FillBy(Me.Epicor10DataSet.UD08, grade)

我正在尝试传递一个基本上将SQL语句更改为如下的参数

SELECT Key1, Character01
FROM Ice.UD08
WHERE (Character01 IN (1155, 1160, 1165))

有办法做到这一点吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果您传递了分隔列表,例如'1155,1160,1165',那么您需要将这些值拆分出来。您可以使用STRING_SPLIT执行此操作;因此你的语法将成为:

SELECT Key1, Character01
FROM Ice.UD08
WHERE Character01 IN (SELECT [value]
                      FROM STRING_SPLIT(@YourParameter));

然而,另一种方法是使用用户定义的表数据类型。 Table-Valued Parameters