これは、SQL のフルテキスト インデックスからの奇妙な動作のようです。
FTI は「NN」プレフィックスを付けてインデックスに番号を格納するため、「123」は「NN123」として保存されます。
ユーザーが N で始まる単語 (つまり "n*" を含む) を検索すると、すべての数字も取得されます。
そう:
select [TextField]
from [MyTable]
where contains([TextField], '"n*"')
戻り値:
MyTable.TextField -------------------------------------------------- このテキストには、ナビゲーターという単語が含まれています このテキストいいですね このテキストには 123 しかなく、返されるべきではありません
その最後の行を除外する良い方法はありますか? これに対する一貫した回避策はありますか?
これらの追加の "" は、ワイルドカード トークンを機能させるために必要です。
select [TextField] from [MyTable] where contains([TextField], 'n*')
リテラル n* を検索しますが、何もありません。
--return rows with the word text
select [TextField] from [MyTable] where contains([TextField], 'text')
--return rows with the word tex*
select [TextField] from [MyTable] where contains([TextField], 'tex*')
--return rows with words that begin tex...
select [TextField] from [MyTable] where contains([TextField], '"tex*"')