【问题标题】:Assigning multi value parameter (values) to a local parameter in sql query在sql查询中将多值参数(值)分配给本地参数
【发布时间】:2020-07-06 21:22:03
【问题描述】:

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

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

但是通过这种方法,我只能选择一个值,如果我选择两个值,则查询失败。

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

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

请帮助解决此问题。非常感谢

【问题讨论】:

    标签: reporting-services sqlparameter


    【解决方案1】:

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

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

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

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

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

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

    INNER JOIN Split(@Customer) ON...
    

    【讨论】:

    • 谢谢@Steven,它有帮助。我在报表生成器中使用了 JOIN 函数并使用了 SplitString 函数。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2021-03-23
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    相关资源
    最近更新 更多