用于测试的硬编码SSRS多值参数

时间:2018-03-01 05:01:23

标签: sql-server tsql reporting-services

我正在尝试在SQL Server Management Studio中测试SQL查询,该查询通常需要SSRS报告中的多值参数。

我不确定在管理工作室中如何对多值参数进行硬编码。该报告是由供应商创建的,我只是想让它可以在SSRS之外进行测试。

例如,SSRS中的参数是用户选择的数字集合 - 即“3100,3102,3105”将是名为@object_code的多值参数的选择

我有类似的东西 - 但它没有用。

 Declare @Object_Code varchar(100)
 Set @object_Code = ('3100','3102','3105')

 ....really long vendor written query I don't thoroughly understand...

 IN(@object_code) 

3 个答案:

答案 0 :(得分:0)

您必须使用String-Split函数来分隔逗号分隔值。 例如 -

Declare @Object_Code varchar(100)
Set @Object_Code = '3100,3102,3105'

....really long vendor written query I dont thoroughly understand...

--T.object_code IN (@object_code)
Inner Join dbo.Split(@Object_Code, ',') as S On S.data = T.object_code

首先搜索您的数据库以查找任何string-split功能。 如果您想创建string-split函数,请按照以下步骤操作 - T-SQL split string

答案 1 :(得分:0)

如果您使用SQL Server 2016,则可能需要查看函数STRING_SPLIT

如果您使用的是较低版本的SQL Server而您无法或者不想创建单独的功能,则可以选择以下方法:

declare @object_code varchar(100);
set @object_code = '3100,3102,3105';

select
    ltrim(rtrim(x.par.value('.[1]','varchar(max)'))) as object_code
from (
    select convert(xml,'<params><param>' + replace(@object_code,',', '</param><param>') + '</param></params>') as c
) tbl
cross apply
    c.nodes('/params/param') x(par);

答案 2 :(得分:0)

每个人似乎都在分手一个不必是字符串的字符串。我们只是在这里查询查询时遇到麻烦,需要一种方法来提供它的价值。 SSRS如何做到这一点并不重要,只是我们可以重现结果。

Declare @Object_Code table (params varchar(20));

INSERT @object_Code 
VALUES ('3100'),('3102'),('3105')

  ....really long vendor written query I don't thoroughly understand...

IN (SELECT params FROM @object_code) 

然后花一些时间来了解查询。