我正在尝试编写一个允许用户搜索多个名称字符串的 SP,但支持 LIKE 功能。例如,用户的输入可能是字符串“Scorsese, Kaurismaki, Tarkovsky”。我使用 split 函数将该字符串转换为具有一列的表 var,如下所示:
part
------
Scorsese
Kaurismaki
Tarkovsky
然后,通常我会使用 IN 语句从表中返回与表 var 中的任何这些值匹配的任何值:
select * from myTable where lastName IN (select * from @myTableVar)
但是,这只返回完全匹配,我需要返回部分匹配。我正在寻找这样的东西,但实际上会编译:
select * from myTable where CONTAINS(lastName, select * from @myTableVar)
我发现了其他问题,其中明确指出不能将 LIKE 和 IN 结合使用,建议使用 CONTAINS。我的具体问题是,是否可以将 CONTAINS 与值的表列表结合起来,如上所述?如果是这样,该语法会是什么样子?如果没有,还有其他解决方法可以实现我的目标吗?
我正在使用 SQL Server 2016,如果它有什么不同的话。