我想编写一个查询,从表中选择在名为Description的列中包含“piggy”字样超过3次的所有行 .
我知道在名为Description的列中选择带有“piggy”字样的行的查询将是:
SELECT * FROM表WHERE描述LIKE“%piggy%”
所以我需要做什么才能选择单词“piggy”出现超过3次 .
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'左边的字符串部分,或者如果它不匹配那么多次返回整个字符串(因此查询会丢弃与整个字符串匹配的行) . 然后,如果您更改了所需的出现次数,只需更改数量即可 .
当然,如果表中有多行,那么所有这些选项都会非常慢 .
SELECT * FROM table WHERE Description LIKE "%piggy%piggy%piggy%"
似乎是最简单的方法 .
2 回答
Maris的答案很简单(除了我相信你想要超过3次),但这些可以更容易定制:
SUBSTRING_INDEX这里返回第4次出现'piggy'左边的字符串部分,或者如果它不匹配那么多次返回整个字符串(因此查询会丢弃与整个字符串匹配的行) . 然后,如果您更改了所需的出现次数,只需更改数量即可 .
当然,如果表中有多行,那么所有这些选项都会非常慢 .
似乎是最简单的方法 .