小编典典

SQL Server中全文搜索的奇怪行为

sql

我有带有列消息NVARCHAR(MAX)的MyTable。

ID为1的记录包含消息“ 0123456789333444测试”

当我运行以下查询

DECLARE @Keyword NVARCHAR(100)

SET @Keyword = '0123456789000001*'

SELECT *
FROM MyTable
WHERE CONTAINS(Message, @Keyword)

记录ID 1显示在结果中,我认为不应,因为0123456789333444不包含0123456789000001。

有人可以解释为什么记录仍然出现吗?

编辑

select * from sys.dm_fts_parser('"0123456789333444 Test"',1033,0,0)

返回以下内容:

group_id phrase_id occurrence special_term  display_term        expansion_type source_term
1        0         1           Exact Match  0123456789333444    0              0123456789333444 Test
1        0         1           Exact Match  nn0123456789333444  0              0123456789333444 Test
1        0         2           Exact Match  test                0              0123456789333444 Test

阅读 168

收藏
2021-04-22

共1个答案

小编典典

找到了可行的解决方案。我添加language 1033了一个附加参数。

SELECT * FROM MyTable WHERE CONTAINS(Message, @Keyword, langauge 1033)
2021-04-22