web-dev-qa-db-ja.com

MySQLを使用して文字列内の文字の出現をカウントする

単語の例:a、akkka、akokaa、kokoko、kakao、oooaooa、kkako、kakaoa

正規表現の魔女が「a」が2以下の単語を与えるが、「a」のない単語は与えない

結果:a、akka、kakao、oooaooa、kkako

はい、実際に使用しています:

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

これは0行を返し、2つのλと3つのλを持つ単語があります。

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

間で使用するように更新されました。

35
Woot4Moo

MySQLがルックアラウンドアサーションに関して何をサポートしているかはわかりませんが、次の方法でうまくいきます。

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

文字列の1つまたは2つのa文字に一致する先読みアサーションがあります。次に、文字列内の3つ以上のasを無視する否定先読みがあります。次に、最初の2つのアサーションが満たされていれば、最終パターンは文字列全体と一致します。

MySQLがルックアラウンドをサポートしていない場合、@ Woot4Mooの答えが適切です。

2
Xophmeister