SQL包含问题

时间:2011-08-05 20:30:44

标签: sql sql-server full-text-search contains

有人可以向我解释一下吗?我在下面有两个查询结果。


查询

select * from tbl where contains([name], '"*he*" AND "*ca*"')

结果集

  

赫兹汽车租赁

     

Hemingyway's Cantina


查询

select * from tbl where contains([name], '"*he*" AND "*ar*"')

结果集

  

没有


第一个查询是我所期望的,但我希望第二个查询返回“Hertz Car Rental”。我是否从根本上误解了“*”在全文搜索中的作用?

谢谢!

3 个答案:

答案 0 :(得分:5)

我认为SQL Server将您的字符串解释为prefix_terms。星号不是普通的旧通配符说明符。 Fulltext和Contains是面向单词的。对于你想要做的事情,你最好使用普通的旧LIKE而不是CONTAINS。

http://msdn.microsoft.com/en-us/library/ms187787.aspx

答案 1 :(得分:4)

“*”仅作为后缀使用。如果您将其用作前缀,则无论如何都需要扫描表,并且索引无效。那时,你也可以这样做

  Select * From Table Where (Name Like '%he%') And (Name Like '%ar%')

答案 2 :(得分:-1)

我会尝试用%替换*,看看它是怎么回事。

select * from tbl where contains([name], '"%he%" AND "%ar%"')