如何在报告参数中编写 SSRS 通配符搜索
SELECT * FROM Table1 WHERE Table1.Name = LIKE '%'@Name'%'
或者
WHERE Table1.Name = in (:Name)?
如何在 SSRS 中执行此操作?
如何在报告参数中编写 SSRS 通配符搜索
SELECT * FROM Table1 WHERE Table1.Name = LIKE '%'@Name'%'
或者
WHERE Table1.Name = in (:Name)?
如何在 SSRS 中执行此操作?
假设我在报告中有一个非常简单的独立查询:
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 + '%'
即只需将通配符直接连接到参数字符串。这与第一个选项相同。
我是这样做的:
="SELECT FilteredField, FieldValue FROM DataTable " & IIF(Parameters!MyFilter.Value.ToString() = "", "", "WHERE FilteredField LIKE '%" & REPLACE(REPLACE(Parameters!MyFilter.Value.ToString(), "*","%"),"?","_") & "%'")
如您所见,我有一个基本的 SELECT 语句,如果 MyFilter 的值为空字符串,我将其与空字符串连接。如果填写了一个值,我将添加一个 WHERE 子句,在其中将“*”替换为“%”和“?” 经过 ”_”
这只是我们实际所做的简化版本,只允许“?” 和“*”用作通配符,但对我们的用户来说效果很好。
使用它会解决你的问题
=" " & 参数名称.值 & " "