如何在报告参数
中编写SSRS通配符搜索SELECT * 从表1 在哪里Table1.Name = LIKE'%' @ Name'%'
或
WHERE Table1.Name = in(:Name)?
我如何在SSRS中执行此操作?
答案 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
,也没有通配符,因此只返回完全匹配:
如果我们查看数据集属性,我们可以更新传递的参数以添加通配符。默认情况下,它看起来像这样:
将参数值表达式更改为:
="%" & Parameters!Param.Value & "%"
现在查询文本将使用带通配符的参数,因此部分匹配将返回报表中的数据:
替代方法
实际上,考虑到这一点,或许更容易实现上述目的的方法是在报告查询文本中执行以下操作:
SELECT *
FROM Table1
WHERE Table1.Name = LIKE '%' + @Name + '%'
即。只需将通配符直接连接到参数字符串即可。这与第一个选项完全相同。
答案 1 :(得分:1)
我就这样做了:
=" 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& " "