我的数据集查询使用LIKE语句选择值:
WHERE unitcode LIKE 'A2%'
因此这将返回A200,A201,A202等。
我的报告将其替换为参数:
WHERE unitcode LIKE @code
其中@code可以是“ A2%”或“ B2%”(可通过下拉菜单选择),以显示包含A2代码或B2代码的报告。
现在,我想添加第三个选择A2和B2代码的选项。这可能吗? LIKE的工作方式似乎阻止了我将多个LIKE捆绑在一个参数中,因此我尝试使用{code {1}}
WHERE @code
,但这会导致错误。
答案 0 :(得分:2)
您可能可以在此处使用SQL Server的增强型LIKE
:
SELECT *
FROM yourTable
WHERE unitcode LIKE '[AB]2%';
这可能会解决您查询的问题,但是您仍然需要一种方法来收集参数,以便可以编写上面的代码。
答案 1 :(得分:0)
我现在在内存上运行,因为我现在无法访问SSRS或报表生成器,但是,如果我没记错的话,如果您使用存储过程,它们都将一组值作为分隔字符串传递。结果是这是Pseudo-SQL,但是您可以使用字符串分隔符执行类似的操作(假设SQL Server 2016+没有标记版本):
CREATE PROC YourProc @code varchar(100) AS
BEGIN
SELECT {Your SELECT statement}
FROM {Your FROM and JOINs}
WHERE EXISTS (SELECT 1
FROM STRING_SPLIT(@code,',') SS
WHERE {YT}.unitcode LIKE SS.[value]) --assumes that the report passed values with a % at the end
AND {Rest of WHERE}; --Otherwise use LIKE SS.[value] + '%'
END