Cron
Новичок
Получить позицию первой из найденых подсток в текстовом поле
В таблице есть текстовое поле. В нем ищу через LIKE. Без сортировки.
А хотелось бы, чтобы в зависимости от того, в какой записи любая из подстрок
найдена раньше - та запись выводилась бы выше.
Для примера создал таблицу, в которой есть несколько записей, а в трех из них есть по одному искомому слову.
id | txtfield
1 | ...какой-то текст и слово1 ...
2 | слово2 и какой-то текст...
3 | текст... слово3 и текст...
4 | ... еще что-то ...
Удалось написать запрос, который кое-как находит позицию, если искать только по 1 слову:
SELECT id, POSITION('слово1' IN txtfield) as mysort
FROM `mytable`
WHERE txtfield LIKE '%слово1%' OR txtfield LIKE '%слово2%' OR txtfield LIKE '%слово3%'
А надо по любому количеству искомых (упомянутых в WHERE). Как можно (если можно) решить такую задачу?
В таблице есть текстовое поле. В нем ищу через LIKE. Без сортировки.
А хотелось бы, чтобы в зависимости от того, в какой записи любая из подстрок
найдена раньше - та запись выводилась бы выше.
Для примера создал таблицу, в которой есть несколько записей, а в трех из них есть по одному искомому слову.
id | txtfield
1 | ...какой-то текст и слово1 ...
2 | слово2 и какой-то текст...
3 | текст... слово3 и текст...
4 | ... еще что-то ...
Удалось написать запрос, который кое-как находит позицию, если искать только по 1 слову:
SELECT id, POSITION('слово1' IN txtfield) as mysort
FROM `mytable`
WHERE txtfield LIKE '%слово1%' OR txtfield LIKE '%слово2%' OR txtfield LIKE '%слово3%'
А надо по любому количеству искомых (упомянутых в WHERE). Как можно (если можно) решить такую задачу?