将多值参数(值)分配给 sql 查询中的局部参数

Assigning multi value parameter (values) to a local parameter in sql query

我有一种情况需要将多值参数存储到 sql 查询中的本地参数。 在 SSRS 报表生成器中,我创建了两个多值参数 @Customer@LogisticsGroup 在我的 SQL 查询中,我必须将这些值分配给像这样的本地参数

DECLARE @Acct NVARCHAR(100) , @LgstGroup NVARCHAR(MAX)
SELECT @Acct = (@Customer) 
,@LgstGroup = (@LogisticsGroup)

但是使用这种方法我只能 select 一个值,如果我 select 两个值则查询失败。

我试过了,但语法似乎不正确。

DECLARE @Acct NVARCHAR(100) , @LgstGroup NVARCHAR(MAX)
SELECT @Acct IN (@Customer) 
,@LgstGroup IN (@LogisticsGroup)

请帮忙解决这个问题。非常感谢

您可以在参数中存储分隔值。因此,例如,@Customer 中可能包含一串 ID,例如 1,2,3。报告可以使用 Join 函数将多个值连接成这种格式。

现在,在 SQL 中,一种选择是使用 LIKE 运算符来搜索字符串。你可以这样写:

@Customer like '%,' + Column_Name + ',%'

但是,这种方法效率低下,您必须注意部分值匹配。

更好的方法是创建一个用户定义的 table 值函数,它可以拆分值并将它们视为 table。那里有很多例子,这是一个非常简单的功能。然后在实践中它看起来像这样:

WHERE Column_Name in (select * from Split(@Customer))

INNER JOIN Split(@Customer) ON...