使用contains在SQL Server中搜索多个值参数的文本

时间:2015-12-10 23:24:06

标签: sql-server full-text-search

我有一个多值参数。

我想使用全文搜索执行与查询1相同的操作。

查询1:

Declare @Class nvarchar(32)

select * 
from Products p
where p.Class in (@Class)

现在我想使用包含:

来使用全文搜索

查询2

Declare @Class nvarchar(32)

select * 
from Products p
where contains(Class, @Class)

如果用户只选择@Class的一个值,则此查询可以正常工作。

如果用户选择更多值,则无效。

知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

假设您的@Class变量以逗号分隔(例如:one,two,three),您可以将其转换为布尔语法(例如:'"one" OR "two" OR "three"'),如下所示:

declare @ClassBooleanStr nvarchar(max)
set @ClassBooleanStr = '"' + Replace(@Class, ',', '" OR "') + '"'

select * 
from Products p
where contains(Class, @ClassBooleanStr)