报告参数中的SSRS通配符搜索

时间:2013-10-28 14:59:21

标签: reporting-services ssrs-2008

如何在报告参数

中编写SSRS通配符搜索

SELECT * 从表1 在哪里Table1.Name = LIKE'%' @ Name'%'

WHERE Table1.Name = in(:Name)?

我如何在SSRS中执行此操作?

3 个答案:

答案 0 :(得分:4)

说我在报告中有一个非常简单的自包含查询:

with val as
(
 select val = 'ABC'
 union all select 'DEF'
 union all select '1ABC3'
)
select *
from val
where val like @Param

我在报告中也有一个名为Param的参数。

默认情况下,即使查询中有like,也没有通配符,因此只返回完全匹配:

enter image description here

如果我们查看数据集属性,我们可以更新传递的参数以添加通配符。默认情况下,它看起来像这样:

enter image description here

将参数值表达式更改为:

="%" & Parameters!Param.Value & "%"

现在查询文本将使用带通配符的参数,因此部分匹配将返回报表中的数据:

enter image description here

替代方法

实际上,考虑到这一点,或许更容易实现上述目的的方法是在报告查询文本中执行以下操作:

SELECT *
FROM Table1
WHERE Table1.Name = LIKE '%' + @Name + '%'

即。只需将通配符直接连接到参数字符串即可。这与第一个选项完全相同。

答案 1 :(得分:1)

我就这样做了:

  1. 创建名为MyFilter的报告参数(数据类型文本)
  2. 使用源查询的表达式创建数据集 ReportData ,如下所示:
  3.   

    =" SELECT FilteredField,FieldValue FROM DataTable" &安培; IIF(参数!MyFilter.Value.ToString()="",""," WHERE   FilteredField LIKE'%" &安培;   REPLACE(REPLACE(参数MyFilter.Value.ToString(),"!*""%"),""" _& #34)   &安培; "%'&#34)

    正如您所看到的,我有一个基本的SELECT语句,如果MyFilter的值是空字符串,我会用空字符串连接。如果填入了一个值,我添加一个WHERE子句,在其中我替换" *" by"%"和"?"通过" _"

    这只是我们实际做的简化版本,只允许"?"和" *"用作通配符,但它适用于我们的用户。

答案 2 :(得分:0)

使用此功能将解决您的问题

=" " &安培; Parametername.value& " "