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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于测试的硬编码SSRS多值参数相关的知识,希望对你有一定的参考价值。

我正在尝试在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) 
答案

您必须使用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

另一答案

如果您使用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);
另一答案

每个人似乎都在分手一个不必是字符串的字符串。我们只是在这里查询查询时遇到麻烦,需要一种方法来提供它的价值。 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) 

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

以上是关于用于测试的硬编码SSRS多值参数的主要内容,如果未能解决你的问题,请参考以下文章

通过 findById 访问活动布局中的硬编码片段

具有多值参数的存储过程表现奇怪

Power BI分页报表连接Power BI Dataset及多值参数设置

Java - LDAP:为什么我们需要用于LDAP绑定的硬编码管理员用户凭据

更改 javascript 文件中的硬编码 ID

open() 的缓冲参数和迭代文件时使用的硬编码预读缓冲区大小有啥区别?