我想编写一个查询来从表中选择名为Description的列中所有包含单词“piggy”的行。MySQL检查一个单词在单元格内出现多少次
SELECT * FROM table WHERE ...?
谢谢!
我想编写一个查询来从表中选择名为Description的列中所有包含单词“piggy”的行。MySQL检查一个单词在单元格内出现多少次
SELECT * FROM table WHERE ...?
谢谢!
在MySQL中,%
是外卡。您不要使用=
运营商的通配符,而是使用LIKE
运营商的通配符。
SELECT * FROM table WHERE `Description` LIKE "%piggy%"
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
select * from table where description like '%piggy%'
将选择并返回piggy字是列值的一部分的所有行。如果要统计有多少行则:
select count(*) from table where description like '%piggy%'
select * from table where description like '%piggy%'
正如多次提到的,你需要一个LIKE
查询此。我只会提醒说,在InnoDB
表中,这将会非常缓慢,因为它不支持全文扫描。如果您希望使用LIKE
获得更好的性能,那么您应该使用MyISAM
。
无论如何,如果你想实现一个搜索引擎,更好地寻找现有的API。我不知道你在用什么编程语言,但如果是Java,我推荐Apache Lucene。
不仅在MySQL中:它是标准SQL表示法(如ISO/IEC 9075-2:2003标准)。 – 2009-11-07 15:03:50