"destroy" <37475@users.rsdn.ru> wrote in message news:3095968@news.rsdn.ru... > Есть ли такой оператор в MySQL, который проверял бы — содержится ли значение поля в определенной строке. То есть: > например > select * from table where table.field содержится в 'текст текст текст' > то есть это что-то вроде LIKE только наоборот
Ага, есть...
select * from table where 'текст текст текст' like table.field
"destroy" <37475@users.rsdn.ru> wrote in message news:3096077@news.rsdn.ru... > )) Да, мне это пришло в голову, но как быть если мне надо использовать конструкцию like '%table.field%' ?? так же нельзя написать
Склей ее CONCAT'ом...
select * from table where 'текст текст текст' like concat('%', table.field, '%')
Здравствуйте, wellwell, Вы писали:
W>"destroy" <37475@users.rsdn.ru> wrote in message news:3096077@news.rsdn.ru... >> )) Да, мне это пришло в голову, но как быть если мне надо использовать конструкцию like '%table.field%' ?? так же нельзя написать
W>Склей ее CONCAT'ом... W>
W>select * from table where 'текст текст текст' like concat('%', table.field, '%')
W>
Здравствуйте, destroy, Вы писали:
D>Есть ли такой оператор в MySQL, который проверял бы — содержится ли значение поля в определенной строке. D> То есть: D>select * from table where table.field содержится в 'текст текст текст' D>то есть это что-то вроде LIKE только наоборот
функция LOCATE(substr, str) быстрее LIKE. Отдает позицию вхождения подстроки или 0.
SELECT * FROM table WHERE LOCATE(table.field, 'текст текст текст') > 0
Здравствуйте, zaro, Вы писали:
Z>функция LOCATE(substr, str) быстрее LIKE. Отдает позицию вхождения подстроки или 0.
что, даже такой оптимизации mysql не умеет делать это уже совсем грустно.
а при like 'prefix%' индекс умеет использовать?
Ziaw пишет:
> что, даже такой оптимизации mysql не умеет делать это уже совсем грустно.
при чем тут оптимизация — просто регекспы всегда работают медленнее
поиска по полному вхождению. А индексы, вестимо, ни там ни там не юзаются
> а при like 'prefix%' индекс умеет использовать?
конечно
Здравствуйте, Роман Дубров, Вы писали:
РД>при чем тут оптимизация — просто регекспы всегда работают медленнее РД>поиска по полному вхождению. А индексы, вестимо, ни там ни там не юзаются
>> а при like 'prefix%' индекс умеет использовать? РД>конечно
при чем тут регэкспы? like '%substr%' заменять на поиск подстроки умеет любой нормальный оптимизатор, тут не надо быть семи пядей во лбу.
Ziaw пишет:
> при чем тут регэкспы? like '%substr%' заменять на поиск подстроки умеет > любой нормальный оптимизатор, тут не надо быть семи пядей во лбу.
мускуль не умеет отличать like '%substr%' от, к примеру, like
'%sub%st?r%', и оптимизировать 1й вариант до locate()
Впрочем, это ему особо и не требуется, т.к. разницу в выполнении по
времени заметить очень сложно — это ближе к религиозным предрассудкам,
вроде преимущества одиночных кавычек над двойными в php