MySQL,如果一个单词在一列中出现多次,则选择表格

时间:2010-11-20 05:55:07

标签: sql mysql

我想编写一个查询,在名为Description的列中从表中选择所有行“piggy”超过3次的行。

我知道在名为Description的列中选择带有“piggy”字样的行的查询将是:

  

SELECT * FROM表WHERE   Description喜欢“%piggy%”

所以我需要做什么才能选择“piggy”这个词出现的次数超过3次。

2 个答案:

答案 0 :(得分:2)

Maris的答案很简单(除了我相信你想要超过3次)但这些可以更容易定制:

SELECT * FROM table WHERE DESCRIPTION LIKE CONCAT('%', REPEAT('piggy%', 4))

SELECT * FROM table WHERE Description != SUBSTRING_INDEX(Description, 'piggy', 4)

SUBSTRING_INDEX这里返回第4次出现'piggy'左边的字符串部分,如果它不匹配那么多次则返回整个字符串(因此查询会丢弃与整个字符串匹配的行)。然后,如果您更改了所需的出现次数,只需更改数字。

当然,如果你的表格中有多行,那么所有这些选项都会非常慢。

答案 1 :(得分:1)

SELECT * FROM table WHERE Description LIKE "%piggy%piggy%piggy%"

似乎是最简单的方式。