Функция LOCATE осуществляет поиск подстроки в строке, возвращает позицию ее первого символа.

Учтите, что нумерация символов начинается с 1.

В отличие от функции POSITION функция LOCATE может начинать поиск не с начала строки, а с определенного места.

См. функции POSITION и INSTR, которые также осуществляют поиск по строке.

Синтаксис

SELECT LOCATE(что_ищем, поле) FROM имя_таблицы WHERE условие
SELECT LOCATE(что_ищем, поле, начало_поиска) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Очень длинный текст!
2 Не очень длинный текст!
3 Просто текст!

Пример

В данном примере в тексте ищется позиция слова 'длинный':

SELECT *, LOCATE('длинный', text) as pos FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
pos
позиция подстроки
1 Очень длинный текст! 7
2 Не очень длинный текст! 10
3 Просто текст! 0

Пример

В данном примере в тексте ищется позиция слова 'длинный', поиск начинается с 8-го символа строки:

SELECT *, LOCATE('длинный', text, 8) as pos FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
pos
позиция подстроки
1 Очень длинный текст! 0
2 Не очень длинный текст! 10
3 Просто текст! 0