Здравствуйте , хочу поделится с вами одним очень простым приёмом в MySQL.
Иногда нам необходимо подсчитать сколько раз какой либо символ встречается в строке, допустим если наша строка делится разделителем , и нам необходимо выяснить из скольких частей состоит строка.
Одной конкретной функции для решения этой задачи в MySQL нет, поэтому мы воспользуемся комбинацией из 2ух функций а именно:
LENGTH и REPLACE
Функция LENGHT подсчитывает количество символов в строке , синтаксис LENGTH('СТРОКА')
Функция REPLACE заменяет указанный символ в строке на другой символ , синтаксис REPLACE('СТРОКА' , Символ или часть строки которую требуется заменить , символ или часть строки которую надо подставить вместо заменяемой части строки)
Решить нашу задачу можно следующим способом , допустим нам необходимо посчитать сколько раз встречается "-" в URL нашего проекта my-office-life.narod.ru
Это можно сделать так:
SELECT LENGTH( 'my-office-life.narod.ru' ) - LENGTH( REPLACE( 'my-office-life.narod.ru', '-', '' ) )
Где.
LENGTH( 'my-office-life.narod.ru' ) - подсчитывает количество символов в строке 'my-office-life.narod.ru', результат 23
REPLACE( 'my-office-life.narod.ru', '-', '') - Заменяет все "-" на "" т.е. удаляет все тире из строки, преобразуя её в вид "myofficelife.narod.ru"
LENGTH( REPLACE( 'my-office-life.narod.ru', '-', '' ) ) - подсчитывает количество символов в строке где оператор REPLACE удалил все "-" , т.е. количество символов в строке "myofficelife.narod.ru",результат 21
Далее остаётся просто посчитать разницу между результатами этих вычислений т.е. от результата LENGTH( 'my-office-life.narod.ru' ) отнимаем результат LENGTH( REPLACE( 'my-office-life.narod.ru', '-', '' ) ) ,
Получается 23 - 21 = 2
В строке 'my-office-life.narod.ru' "-" встречается 2 раза.
При копировании материала необходимо указать ссылку!