SQL Contains不返回任何结果

时间:2012-08-16 02:01:00

标签: mysql contains

我正在尝试在我的网站上升级搜索。

我偶然发现了CONTAINS。

我已将要搜索的列设置为FULLTEXT。

我错过了什么?

title = Test is what i'm doing

SELECT * FROM test WHERE title LIKE "%Test%"

工作正常。

SELECT * FROM test WHERE CONTAINS('*', "'Test*'")

什么都不返回。

我试过了

SELECT * FROM test WHERE CONTAINS(title, "Test")

以及我能想到的其他一切。

包含所有东西的东西都没有返回。

这是我的表结构。

Action  Keyname Type    Unique  Packed  Column  Cardinality Collation   Null    Comment
 Edit    Drop   PRIMARY BTREE   Yes No  ID  15642   A           
 Edit    Drop   title   FULLTEXT    No  No  title   1       YES 

我在这里缺少什么?

我正在使用MySQL 5.5

2 个答案:

答案 0 :(得分:0)

CONTAINS仅在您拥有全文索引列时才有效。据推测,这还没有到位。

按照http://msdn.microsoft.com/en-us/library/ms142497上的说明进行操作,以帮助设置。

答案 1 :(得分:0)

  1. title列必须为CONTAINS编制索引才能生效。 title列是否已编入索引?

  2. 根据this post,使用包含关键字的通配符存在限制。

  3. 根据您的数据库实施情况,双引号可能会导致意外结果。将此更改为单引号是安全的。 (MSDN中的一些示例使用双引号和单引号,但外引号是单引号(与您的示例不同)。

  4. 您确定您的数据库中有哪些记录具有指定字符串“Test”?

  5. 根据http://forums.asp.net/t/1639440.aspx的其中一个回复,CONTAINS运算符在SQL Express中不可用。您没有提到您正在使用哪个数据库,因此这可能适用也可能不适用。