0

我有包含所有产品详细信息的表名产品。(列:id、名称、价格)

来自链接的商品名称是“Garmin nüvi 1340T GPS for Europe 4.3”画面、Info Traffic TMC Premium、Micro SD Card”

我想在 sql server 中使用 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))')

这显示零结果。

我尝试使用“(双引号)和 ,(分号)查询服务错误。

所以去掉了那两个特殊字符。所以它没有显示任何结果。

如何传递特殊字符或如何使用特殊字符进行搜索。

提前致谢

4

1 回答 1

1

我建议使用 N'(((( ... 而不是 '(((( 那样你将它转换为 nvarchar 而不是 varchar。

另一件事是检查“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 回答