Кол-во вхождений элемента в поле

Avdoshyn

Новичок
Кол-во вхождений элемента в поле

Как посчитать кол-во вхождения например символа "b" с строковое поле?

tekst

a,b,c,b,d,b

то есть что запрос возрватил 3.

FIND_IN_SET возрващает только позицию первого найденного элемента, а необходимо получить кол-во вхождений символа в строку?

Заранее спасибо.
 

camka

не самка
Прямой функции подсчета количества вхождений подстроки в строку в MySQL'е нету. Заменяй искомую подстроку пустой строкой и высчитывай разницу между длинами изначальной и полученной строк, потом дели на длину искомой подстроки.
 

Avdoshyn

Новичок
Ответ

нашел выход

SELECT * FROM `table` WHERE filed like concat("%",REPEAT(",%",N)), где N - кол-во минимальное элементов
 

camka

не самка
Поясни пожалуйста, где в твоем примере выдается результирующее число вхождений, и почему N - это минимальное количество и каких элементов.

Твой вариант выбирает только те записи, в которых подстрока входит в строку больше или ровно N раз.
 

Avdoshyn

Новичок
да. согласен, не совсем прав - моя цель была выбирать запись, где в строковом поле искомый элемент входить не менее стольки то раз, для этого очевидно нужна была функция которая бы считала это кол-во вхождений, потому что вытягивать строку и парсить не в мускуле, а уже в программе - это была бы хана по скорости, Однако нашел альтернативный вариант, который справился с задачей, однако действительно кол-во вхождений он не возрващает.

В общем то вопрос остается теоретически открытым
 

camka

не самка
я не предлагал вытягивать все записи. я предлагал:

WHERE (CHAR_LENGTH(s1)-CHAR_LENGTH(REPLACE(s1, s2, '')))/CHAR_LENGTH(s2) >= N
 
Сверху