2010-11-20 94 views
0

我想编写一个查询,以在名为Description的列中选择具有单词“piggy”3次以上的所有行。如果一个字在列中出现多次出现,MySQL会选择表格

我知道查询在一个名为描述列单词 “小猪” 选择行会:

SELECT * FROM表WHERE Description LIKE “%小猪%”

所以我需要做什么才能选择,只有当“小猪”一词出现超过3次。

回答

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

似乎是最简单的方法。

2

马里斯的回答是好的,容易(除了我相信你想要的3倍以上),但这些都可以更轻松地自定义:这里

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

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

SUBSTRING_INDEX返回字符串的部分的左侧第四次出现'小猪'或整个字符串,如果它不匹配多次(所以查询抛出匹配整个字符串的行)。那么如果你改变了你想要的出现次数,只需要改变这个数字。

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

相关问题