我一直在寻找一段时间,遗憾的是似乎找不到解决方案。
基本上我有一个以逗号分隔的关键字字符串,我已经使用一个带有@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 +'%'。
非常感谢任何帮助。
由于
答案 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 + '%'