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

Sql server 在Where语句的1个参数中使用多个值,sql-server,vb.net,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.Epico

我正在使用一个查询用以下查询填充
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))

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

如果要传递带分隔符的列表,例如
'115511601165'
,则需要拆分这些值。您可以使用
STRING_SPLIT
执行此操作;因此,您的语法将变成:

SELECT Key1, Character01
FROM Ice.UD08
WHERE Character01 IN (SELECT [value]
                      FROM STRING_SPLIT(@YourParameter));
但是,另一种方法是使用用户定义的表数据类型