MsSql where field LI INKE(LIST)

时间:2011-05-03 08:18:27

标签: sql-server search where-clause

我一直在寻找一段时间,遗憾的是似乎找不到解决方案。

基本上我有一个以逗号分隔的关键字字符串,我已经使用一个带有@String并返回TABLE(Value varchar(30))的函数成功转换为一个列表。到目前为止一切都很好。

我现在可以在where子句中使用此列表,如下所示:

SELECT project.*
FROM Projects project 
WHERE project.title IN (SELECT * FROM dbo.ParamsToList('.net,test'))

这与project.title完全(等于)任何一个关键字(.net或test)匹配。

我需要的是匹配标题为LIKE'%'+ any-keyword +'%'。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:5)

一种方式是这样的:

SELECT project.*
FROM Projects project 
WHERE EXISTS
    (
        SELECT * FROM dbo.ParamsToList('.net,test') x 
        WHERE project.title LIKE '%' + x.value + '%'
    )

如果项目与params列表中的多个值匹配,则此方法意味着您不会多次返回相同的项目。

答案 1 :(得分:2)

您是否尝试过JOINING此功能的结果

SELECT DISTINCT project.*
FROM   Projects project
       INNER JOIN dbo.ParamsToList('.net,test') pl ON project.title LIKE '%' + pl.Value + '%'