如何在SSRS中通过筛选器实现多值参数的文本包含搜索?
SSRS多值参数模糊匹配筛选解决方案
针对多值参数需要模糊匹配(LIKE)筛选的场景,提供以下几种可行方案:
方案一:数据集SQL查询直接处理(SQL Server数据源)
利用SQL的字符串拆分函数,将多值参数拆分为单个值后,逐一匹配目标列:
SELECT * FROM 你的数据表名 WHERE EXISTS ( SELECT 1 FROM STRING_SPLIT(@PAR, ',') AS 参数拆分表 WHERE 目标列名 LIKE '%' + 参数拆分表.value + '%' )
注:若使用SQL Server 2016之前的版本,
STRING_SPLIT不可用,可替换为自定义字符串拆分函数或XML拆分方式。
方案二:Tablix筛选器结合自定义代码
通过报表自定义代码实现“列值包含任意参数值”的判断:
- 打开报表属性 → 代码,添加以下VB代码:
Function ContainsAny(targetStr As String, paramValues As Object()) As Boolean For Each val As String In paramValues If InStr(targetStr, val) > 0 Then Return True End If Next Return False End Function
- 进入Tablix的筛选器设置,添加新筛选规则:
- 表达式:
=Code.ContainsAny(Fields!目标列名.Value, Parameters!PAR.Value) - 运算符:
= - 值:
True
- 表达式:
方案三:添加“全部”选项优化参数逻辑
在多值参数中新增“全部”选项,让用户可选择返回所有数据或匹配指定值:
- 参数设置中,将“全部”加入可用值列表,值设为自定义标识(如
ALL) - 修改数据集查询:
SELECT * FROM 你的数据表名 WHERE (@PAR = 'ALL' OR EXISTS ( SELECT 1 FROM STRING_SPLIT(@PAR, ',') AS p WHERE 目标列名 LIKE '%' + p.value + '%' ))
内容的提问来源于stack exchange,提问作者Petersselorse
相关产品推荐
相关产品推荐

