首页 文章

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

提问于
浏览
0

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

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

SELECT * FROM表WHERE描述LIKE“%piggy%”

所以我需要做什么才能选择单词“piggy”出现超过3次 .

2 回答

  • 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
    SELECT * FROM table WHERE Description LIKE "%piggy%piggy%piggy%"
    

    似乎是最简单的方法 .

相关问题