0

すべての製品の詳細を含むテーブル名製品があります。(列: id、名前、価格)

商品名は「Garmin nüvi 1340T GPS for Europe 4.3" screen, Info Traffic TMC Premium, Micro SD Card" リンクから」

SQLサーバーでcontains()を使ってこの商品を検索したいです。

クエリを書きました

select top 10 * from Product where CONTAINS(p.*,N'((((((((((((((FORMSOF (INFLECTIONAL, Garmin) AND FORMSOF (INFLECTIONAL, nüvi)) AND FORMSOF (INFLECTIONAL, 1340T)) AND FORMSOF (INFLECTIONAL, GPS)) AND FORMSOF (INFLECTIONAL, for)) AND FORMSOF (INFLECTIONAL, Europe))  AND FORMSOF (INFLECTIONAL, 4.3)) AND FORMSOF (INFLECTIONAL, screen)) AND FORMSOF (INFLECTIONAL, Info)) AND FORMSOF (INFLECTIONAL, Traffic)) AND FORMSOF (INFLECTIONAL, TMC)) AND FORMSOF (INFLECTIONAL, Premium)) AND FORMSOF (INFLECTIONAL, Micro)) AND FORMSOF (INFLECTIONAL, SD)) AND FORMSOF (INFLECTIONAL, Card))')

これはゼロの結果を示しています。

"(二重引用符) と ,(セミコロン) を試してみましたが、クエリはエラーを処理しています。

その2つの特殊文字を削除しました。そのため、結果は表示されません。

特殊文字を渡す方法または特殊文字で検索する方法。

前もって感謝します

4

1 に答える 1

1

N'(((( ... の代わりに '(((( を使用すると、varchar ではなく nvarchar にキャストできます。

もう 1 つのことは、"for" をチェックすることです。for は一般的なキーワードであるため、フルテキスト インデックスの作成時にスキップされます。このクエリは(実験的に)私にとってはうまくいきます

N'((((((((((((((FORMSOF (INFLECTIONAL, Garmin) AND FORMSOF (INFLECTIONAL, nüvi)) AND FORMSOF (INFLECTIONAL, 1340T)) AND FORMSOF (INFLECTIONAL, GPS))) AND FORMSOF (INFLECTIONAL, Europe))  AND FORMSOF (INFLECTIONAL, 4.3)) AND FORMSOF (INFLECTIONAL, screen)) AND FORMSOF (INFLECTIONAL, Info)) AND FORMSOF (INFLECTIONAL, Traffic)) AND FORMSOF (INFLECTIONAL, TMC)) AND FORMSOF (INFLECTIONAL, Premium)) AND FORMSOF (INFLECTIONAL, Micro)) AND FORMSOF (INFLECTIONAL, SD)) AND FORMSOF (INFLECTIONAL, Card))
于 2013-06-17T09:42:33.187 に答える