0

如何在报告参数中编写 SSRS 通配符搜索

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

或者

WHERE Table1.Name = in (:Name)?

如何在 SSRS 中执行此操作?

4

3 回答 3

4

假设我在报告中有一个非常简单的独立查询:

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

我还有一个Param在报告中调用的参数。

默认情况下,即使我like在查询中,也没有通配符,所以只会返回完全匹配:

在此处输入图像描述

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

在此处输入图像描述

将参数值表达式更改为:

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

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

在此处输入图像描述

替代方法

实际上,考虑到这一点,实现上述目标的更简单方法可能是在报告查询文本中执行以下操作:

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

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

于 2013-10-28T17:21:34.857 回答
1

我是这样做的:

  1. 创建一个名为 MyFilter 的报表参数(数据类型文本)
  2. 使用源查询的表达式创建 DataSet ReportData ,例如:

="SELECT FilteredField, FieldValue FROM DataTable " & IIF(Parameters!MyFilter.Value.ToString() = "", "", "WHERE FilteredField LIKE '%" & REPLACE(REPLACE(Parameters!MyFilter.Value.ToString(), "*","%"),"?","_") & "%'")

如您所见,我有一个基本的 SELECT 语句,如果 MyFilter 的值为空字符串,我将其与空字符串连接。如果填写了一个值,我将添加一个 WHERE 子句,在其中将“*”替换为“%”和“?” 经过 ”_”

这只是我们实际所做的简化版本,只允许“?” 和“*”用作通配符,但对我们的用户来说效果很好。

于 2014-05-14T15:23:33.947 回答
0

使用它会解决你的问题

=" " & 参数名称.值 & " "

于 2017-06-16T05:13:57.600 回答