Подсчет количества вхождений строки

sokol

Zavolga.Net
Подсчет количества вхождений строки

Есть ли подобная функция в MySQL. Смотрел строковые функции в документации, не увидел... Если есть подобное, ткните носом плз.
 

sokol

Zavolga.Net
Бресь Сергей
Нет нужно имеено количество вхождений.
 

.des.

Поставил пиво кому надо ;-)
Если делать средствами mysql


LENGTH(REPLACE(fld, str1,str2))-LENGTH(fld)
где str1 искомая строка
str2 любая строка длины равной искомой +1 символ
имеет смысл если хочешь получить из базы все готовое и не париться на php


эффективность страдает так как REPLACE все таки дорогостоящая операция.
 

sokol

Zavolga.Net
.des.
Надо померять что быстрее в PHP посчитать или в MySQL.
Количство обрабатываемых таким образом строк вряд ли будет больше 10, размер обрабатываемой строки порядка 50 кб... потому не хотелось бы вобще в результате выборки получаеть поле содержашее данную строкку да еще потом в PHP считать.

-~{}~ 11.06.04 11:53:

А может лучше при вставках и обновлениях посчитать в PHP и внести в отдельное поле?
 

.des.

Поставил пиво кому надо ;-)
А может лучше при вставках и обновлениях посчитать в PHP и внести в отдельное поле?
Это тоже вариант. Если скорость критична, то именно так и нужно сделать (только если вставок и обновлений не очень много и искомая строка всегда одна)


Надо померять что быстрее в PHP посчитать или в MySQL.
приведенное решение никак не сочетается со скоростью... просто удобно получаем из запроса уже полностью готовый вариант.

Например, при запросе информации о продуктах из базы я очень часто прямо в запросе формирую пути к ним, что то вроде
Код:
CONCAT('"._HOST."/products/', product_id) as ppath
удобно PHP кода мало, получившийся результат сразу идет в темплэйт.
 

sokol

Zavolga.Net
.des. кстати в MySQL не так уж и медленно получается

Результат:
10 строк, каждая строка по 65 кб, в каждой строке по 200 искомых подстрок.

Запрос выполняется за 0.05 сек

Я таким образом считаю количество картинок (<IMG>) в тексте страницы. У одного материала редко бывает больше 10 страниц, так что вариант подходит.
 
Сверху