Автор Тема: MySQL: Подсчитать число вхождений подстроки в строку  (Прочитано 6181 раз)

Марахтанов Алексей

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 205
    • marahtanov.ru
Наткнулся в Интернете на интересный способ подсчета числа вхождений подстроки в строку для MySQL (встроенной функции под эту задачу в СУБД MySQL нет)

Например, ищем количество вхождений подстроки '/' в строку '/home/site/www/'

select (char_length('/home/site/www/') - char_length(replace('/home/site/www/','/',''))) div char_length('/') from dual
Вернет 4 (проверено!)

Понятно, что вместо dual можно подставлять любую таблицу, а вместо строк '/home/site/www/' и '/' - любые поля этой таблицы.

Как это работает? Очень хитро. Из строки вырезаются искомые символы. Полученная длина сравнивается с исходной длиной строки. Понятно, что если длина изменилась - значит, искомая строка есть (была вырезана). Сколько раз? разницу делим на длину искомой вырезанной строки. Получаем результат!