Здравствуйте , хочу поделится с вами одним очень простым приёмом в 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 раза.
При копировании материала необходимо указать ссылку!
|