如何筛选WHERE字段值LIKE存储在SQL中的多值参数中的任何值

时间:2014-06-16 21:10:04

标签: sql sql-server reporting-services

我有一个使用多值参数的报告(使用SSRS构建)。

我想在我的SQL查询中添加一个过滤器WHERE FieldA就像存储在参数中的任何值一样。

因此FieldA可能具有以下值:

BOBJAMESLOUISE  
MARYBOB  
JENNY  
JOHNLOUISEJAMES  
BOB  
JENNYJAMESMIKE  

@ ParamA可能包含以下值:

Bob, Louise  

因此,在此示例中,只应返回记录1, 3, 4 and 5

感谢提前的任何帮助:)

P.S我正在使用SQL Server 2008

2 个答案:

答案 0 :(得分:0)

您需要实现类似split功能的功能。这可以采用逗号分隔值列表,并将其分成您想要的行。

以下是几个不同版本的链接,其中任何一个都适合您。它还告诉您如何使用它。

Split Function

答案 1 :(得分:0)

我猜它不是尖锐的刺痛部分,因为只是谷歌搜索SQL分裂字符串你可以找到很多例子。在你的情况下,拆分字符串后你想要的是这样的。假设您最终使用的分割字符串函数返回值表。这是您对字段A的比较查询的样子。

SELECT * FROM YourTableWithFieldA WHERE (@ParamA IS NULL OR EXISTS ( SELECT * FROM        YourSplitFunctionThatReturnsATableOfValues(@ParamA) SplitTable WHERE (FieldA Like '%'+SplitTable.Value+'%')))