gsh*_*arp 8 sql t-sql sql-server full-text-search contains
我有一个带有列消息NVARCHAR(MAX)的MyTable.
ID为1的记录包含消息'0123456789333444 Test'
当我运行以下查询时
DECLARE @Keyword NVARCHAR(100)
SET @Keyword = '0123456789000001*'
SELECT *
FROM MyTable
WHERE CONTAINS(Message, @Keyword)
Run Code Online (Sandbox Code Playgroud)
记录ID 1显示在结果中,在我看来它不应该因为0123456789333444不包含0123456789000001.
有人可以解释为什么记录会出现吗?
编辑
select * from sys.dm_fts_parser('"0123456789333444 Test"',1033,0,0)
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
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
Run Code Online (Sandbox Code Playgroud)
找到了一个有效的解决方案。我已添加language 1033作为附加参数。
SELECT * FROM MyTable WHERE CONTAINS(Message, @Keyword, langauge 1033)
Run Code Online (Sandbox Code Playgroud)