小编Mag*_*ith的帖子

为什么 CONTAINS 在字符串末尾找不到匹配项?

我在 Microsoft SQL Server 2008 R2 (SP3) 中有一个存储过程,它在表中搜索与@Keywords我传入的参数匹配的任何内容。LIKE由于该表有 155,000 行,所以使用速度太慢,所以我创建了一个全文目录并切换到使用CONTAINS反而。我对这个功能不是很熟悉,但在研究之后似乎我需要做的就是处理用户选择的单词:

SET @Keywords = '"' + @Keywords + '*"'
Run Code Online (Sandbox Code Playgroud)

添加双引号和星号效果很好,直到有人发现在搜索他们知道肯定存在的字符串时没有结果。似乎*正在停止CONTAINS查找@Keywords位于字符串最末尾的行。

使用非常简单的 t-SQL 进行分析:

--first I prove that I can find the one row which the user was searching for
--this column is a NVARCHAR(200)
SELECT * FROM News 
WHERE Headline = '1120 days at sea and still sailing' --1 row returned (OK)
SELECT * FROM News 
WHERE Headline LIKE …
Run Code Online (Sandbox Code Playgroud)

sql-server full-text-search

5
推荐指数
1
解决办法
3686
查看次数

标签 统计

full-text-search ×1

sql-server ×1