5

フルテキストインデックスが検索に使用される1つのテーブル列に設定されたSQL Server 2008データベースがあります。SQL Serverのフルテキストでは、先行ゼロが考慮されていません

次の条件でCONTAINS句を使用してテーブルに対してクエリを実行しようとすると、 "003"は先頭のゼロを無視し、 "3"に一致するすべての行を返します。

私たちは、検索の先頭にゼロを考慮しようとしていますか?

(全文のストップリストは空です)。

UPDATE:私はしばらく前にこのような同様の問題があったクエリ

SELECT * FROM Table 
WHERE CONTAINS(SearchIndex, '"003*"') 
+0

あなたの質問をお聞かせください。 –

+0

クエリの出力は何ですか?あなたは "3"にマッチするすべての行を返しますが、先頭のゼロを持つ行も返しますか? SearhIndex LIKE '003%'はどこから来たのですか? – TheBoyan

+0

実際には、先行ゼロとそれを持たないものを返します。 – luisporras

答えて

0

おそらく1つのアプローチは、フルテキスト検索で複数の結果を選択し、その結果から特定の結果を選択することです。しかしこれにはもっと良い解決策があるかもしれません。

私はこのアプローチを試みましたが、実際にはうまくいきました。それはまた、値を選択するだけではるかに速く動作します。

0

私はこの同じ問題に遭遇し、フルテキストパーサーが先頭の0を処理する方法に問題があることがわかりました。 This postが私の理解を助けました。 sys.dm_fts_parserを使用して、フルテキストパーサーが先頭の0でどのように数値を解析するかを調べる場合は、問題を自分で確認できます。

マイクロソフトがこの「機能」を無効にしてもらいたいと本当に思います。しかし、他の回答に記載されている回避策はうまくいきますが、さまざまなフルテキスト検索機能のような複数の列に基づいたマッチングは簡単にはできません。

関連する問題