2013-03-21 52 views
0

我正在寻找使用innodb引擎在mysql中搜索特定单词的方法。考虑以下示例:在数据库中进行特定搜索

Text: 
1.Card has two sides. 
2.This is my card. 
3.We have a car. 
4.Car has good color. 
5.This was my car. 
6.The car is nice. 

假设这些点是不同的行并且位于同一列“文本”下。无论“开车”这个词是在开始,在中间还是在结尾,我需要一个使用“like”来抽取含有“car”这个词的行的查询。请记住,“卡”不是必需的。

+1

选择文本FROM表,其中文本LIKE“%之间汽车%'; – 2013-03-21 08:07:50

+2

@BojanKovacevic它将包括'CARD'。 – 2013-03-21 08:08:43

+0

@BojanKovacevic会不会包含'Card'?我不是100%确定OP是否想通过说“不需要卡”来排除卡。也许OP可以详细说明? – uncovery 2013-03-21 08:09:06

回答

1

这里是..

SELECT * FROM table WHERE name LIKE '% car' or name LIKE 'car %' or name LIKE '% car %' or name like '% car.'; 

会选择这两个词开始最后一个字和词

0

如果你想包括“汽车”,并排除“卡”,您可以搜索

SELECT Text FROM Table WHERE Text LIKE '% Car.%' or Text LIKE '% Car %'; 

这需要那里总是一个“”到底。 您可以添加另一个

or Text LIKE '% Car'; 

如果你不确定这一点。

如果这变得更加复杂,你可能想看看正则表达式。虽然通常较慢,但如果您的LIKE ... OR ...表达式太复杂,它们会更快。你可能需要做一些基准测试来找出哪种情况最好。

2

使用它

SELECT * FROM table WHERE name LIKE '%car' or name LIKE '%car %'; 
+0

那不包括4号线的例子吗? – uncovery 2013-03-21 08:15:20

+0

现在它应该返回你想要的结果。 – 2013-03-21 08:25:48