我想编写一个查询,在名为Description的列中从表中选择所有行“piggy”超过3次的行。
我知道在名为Description的列中选择带有“piggy”字样的行的查询将是:
SELECT * FROM表WHERE
Description
喜欢“%piggy%”
所以我需要做什么才能选择“piggy”这个词出现的次数超过3次。
答案 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%"
似乎是最简单的方式。