使用MySQL计算字符串中字符的出现次数

时间:2013-01-04 12:47:27

标签: mysql sql regex

示例词:a,akkka,akokaa,kokoko,kakao,oooaooa,kkako,kakaoa

我需要正则表达式女巫给出带有2个或更少'a'的单词但不能带有'a'的单词

结果:a,akka,kakao,oooaooa,kkako

确实我正在使用:

SELECT word FROM dictionary_gr WHERE word REGEXP 'λ{2,3}' LIMIT 0 , 30

这返回0行,有2个λ和3个λ的单词

3 个答案:

答案 0 :(得分:35)

select *  
from table  
where  LENGTH(name) - LENGTH(REPLACE(name, 'a', '')) between 1 and 2

更新以在。之间使用。

答案 1 :(得分:2)

我不知道MySQL在外观断言方面支持什么,但以下内容将起到作用:

^(?=.*a.*a?.*)(?!.*a.*a.*a.*).*$

我们有一个先行断言,匹配字符串中的1或2个a个字符。然后我们有一个负向前瞻,忽略了字符串中任何位置的3个或更多a个。然后最终模式恰好匹配整个字符串,前两个断言得到满足。

如果MySQL不支持外观,那么@ Woot4Moo的答案将是可行的方法。

答案 2 :(得分:-2)

又快又脏:

Select word, number_of_as From
(
 Select 'akkka' word, REGEXP_COUNT('akkka', 'a') number_of_as From dual
)
Where number_of_as <= 2
/