Подтвердить что ты не робот

Считать количество символов в строке с использованием MySQL

Примеры слов: a, akkka, akokaa, kokoko, kakao, oooaooa, kkako, kakaoa

Мне нужно, чтобы regexp witch давала слова с 2 или меньше 'a', но не словами без 'a'

Результат: a, akka, kakao, oooaooa, kkako

Хорошо, я использую:

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

это возвращает 0 строк, есть слова с 2 λ и 3 λ

4b9b3361

Ответ 1

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

Обновлено для использования между.

Ответ 2

Я не знаю, что поддерживает MySQL в терминах поисковых запросов, но следующее будет делать трюк:

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

У нас есть утверждение lookahead, которое соответствует 1 или 2 символам a в строке. Тогда у нас есть негативный взгляд, который игнорирует 3 или более a в любом месте строки. Тогда окончательный шаблон просто соответствует всей строке, обеспечивая выполнение первых двух утверждений.

Если MySQL не поддерживает поисковые запросы, тогда ответ @Woot4Moo будет способом.

Ответ 3

Быстрая и грязная:

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