在where子句中组合两个CONTAINS调用

时间:2009-06-10 01:39:30

标签: sql sql-server sql-server-2008

我正在尝试创建以下SQL查询(例如,这是最终查询的示例): -

DECLARE @SearchQuery AS NVARCHAR(100) = 'yellow bird'

SELECT Id, Name
FROM dbo.FooBars
WHERE CONTAINS(Name, N'FORMSOF(Thesaurus, yellow)') 
  AND CONTAINS(Name, N'FORMSOF(Thesaurus, bird)')

注意我有两条CONTAINS行吗?这是因为搜索查询中有两个单词。 ( space 是分隔符)。此查询可以是1到n个单词。

如何根据搜索查询中的字数生成此SQL代码?

1 个答案:

答案 0 :(得分:3)

您可以将“AND”放入包含本身,因此可以

select * 
from dbo.FooBars
where contains(Name, 'FORMSOF(Thesaurus, yellow) AND FORMSOF(Thesaurus, bird)')

字符串'FORMSOF(同义词库,黄色)和FORMSOF(同义词库,鸟)' 建立在像

这样的变量中
declare @searchCriteria varchar(200)
set @searchCriteria = 'Some string you built up'
select * 
from dbo.FooBars
where contains(Name, @searchCriteria)