Dko*_*ong 26 t-sql full-text-search sql-server-2008
我有基本的存储过程,通过传入@Keyword参数对表中的3列执行全文搜索.它只用一个单词就可以正常工作,但是当我尝试传入多个单词时它就会失效.我不知道为什么.错误说:
全文搜索条件中"搜索项目"附近的语法错误'这是搜索项'
SELECT S.[SeriesID],
S.[Name] as 'SeriesName',
P.[PackageID],
P.[Name]
FROM [Series] S
INNER JOIN [PackageSeries] PS ON S.[SeriesID] = PS.[PackageID]
INNER JOIN [Package] P ON PS.[PackageID] = P.[PackageID]
WHERE CONTAINS ((S.[Name],S.[Description], S.[Keywords]),@Keywords)
AND (S.[IsActive] = 1) AND (P.[IsActive] = 1)
ORDER BY [Name] ASC
Run Code Online (Sandbox Code Playgroud)
Aar*_*n D 43
在将@Keyword参数传递给SQL语句之前,您必须对其进行一些预处理.SQL期望关键字搜索将由布尔逻辑分隔或用引号括起来.因此,如果您要搜索该短语,则必须使用引号:
SET @Keyword = '"this is a search item"'
Run Code Online (Sandbox Code Playgroud)
如果你想搜索所有单词,那么你需要类似的东西
SET @Keyword = '"this" AND "is" AND "a" AND "search" AND "item"'
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅T-SQL CONTAINS语法,特别是在Examples部分.
另外请注意,请务必替换双引号字符(带空格),这样就不会弄乱全文查询.有关如何执行此操作的详细信息,请参阅此问题:SQL Server全文搜索转义字符?