8

列メッセージ 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
4

3 に答える 3

1

うまくいく解決策を見つけました。language 1033追加パラメータとして追加しました。

SELECT * FROM MyTable WHERE CONTAINS(Message, @Keyword, langauge 1033) 
于 2014-01-13T10:19:41.553 に答える