В предыдущих ответах и ссылке на pento.net аргументы LOCATE()
в нижнем регистре.
Это пустая трата ресурсов, так как LOCATE по умолчанию не учитывает регистр:
mysql> select locate('el', 'HELLo');
+-----------------------+
| locate('el', 'HELLo') |
+-----------------------+
| 2 |
+-----------------------+
Вы можете заменить
WHILE Locate( LCASE(REPLACE_THIS), LCASE(REPLACE_WHERE), last_occurency ) > 0 DO
с
WHILE Locate(REPLACE_THIS, REPLACE_WHERE, last_occurency ) > 0 DO
и т.д.