MySQL. Количество вхождений подстроки в строку
Моему другу понадобилось подсчитать с помощью MySQL число вхождений подстрок в строке, так как подобной функции в MySQL не имеется, то я составил свой запрос.
По функциональности это аналог PHP функции substr_count.
Итак, рассмотрим реализацию на примере исходных данных моего друга:
- "(1)(29)(330)" - допустим строка в выборке;
- ")" - используемый нами разделитель.
select (char_length('(1)(29)(330)') - char_length(replace('(1)(29)(330)',')',''))) div char_length(')');
- Тут все элементарно, вычисляется разность между количеством символов целой строки
и количеством символов строки, у которой заменен на пустоту - наш разделительchar_length('(1)(29)(330)')
char_length(')')
Потом вычисляется целочисленный остаток от деления (1) на (2).
В результате мы получим число "3".
Комментарии
Я, хоть и не ваш постоянный читатель, но всё же выскажу свое мнение. На ваш сайт попал практически случайно. Однако узнал много чего нового и интересного. Так что, как говорится, ПЕШЫ ИСЧО :)
Да)
А можно ли использовать подобный метод для массива с перечислением символов?
Что? Подробнее...
Можно ли как-то составить запрос, который определит входят ли элементы массива в строку поля?
Задача:
Хочу выбрать роботов из строки useragent:
есть строки в таблице:
1. Yandex/1.01.001 (compatible; Win16; m)
2. Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
3. Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 WebMoney Advisor
имеется массив с именами ботов (Yandex,Googlebot)
Как выбрать SQL запросом первые 2 строки?
Молодцом! и чего только не придумает изощренный мозг программера)
Спасибо огромное! Требовалось найти число символов в строке на mysql, это то что надо.
Спасибо! Элегантно :-)
Чувак, ты гений! Плюс плюс плюс!
Если придумал сам, а не нашол в интернете, присоеденяюсь к Ать.
Даже в избранное сайт добавлю, посмотрю детальнее Ваш ресурс)
Спасибо, применил! :)
Изящное решение. Аплодисменты!
Оставьте свой комментарий