Не работает регулярное выражение ^/?p=12$

workOnFood

Новичок
Всем доброго дня.
Отправляю следующий запрос -

select id from et_tests where test_url rlike "(^/?p=12$)|(,/?p=12$)|(^/?p=12,)|(,/?p=12,)"

в ячейке test_url присутствует значение /?p=12

так находит /?p=12$

так нет ^/?p=12$

Пробовал regexp вместо rlike хотя это помоему (картошка || картофель).

Помогите разобраться плз.
 

workOnFood

Новичок
Пробовал экранировать (^/\?p=12$), эффект тот же. Пишу непосредственно в phpMyAdmin.
 

Вурдалак

Продвинутый новичок
«Пациенты всегда врут». Надо приводить конкретный запрос, конкретное значение. Попробовать PCRE в PHP. Если в PHP работает, а в SQL — нет, то приходи сюда снова.

P.S. Я могу предположить, что ты неверно делаешь экранирование.
 

workOnFood

Новичок
В топике все конкретно указано. Куда конкретнее?

select id from et_tests where test_url rlike "^/\?p=12$" - запрос не обрабатывается не в php ни в sql

значение test_url одна единственна запись - /?p=12

Честно, не знаю что еще можно добавить. У тебя работает такое?
 

workOnFood

Новичок
А, получается mysql какбы выполняет stripslashes() перед обработкой запроса?
Так все действительно работает. Спасибо.
 

workOnFood

Новичок
Ну это скорее не особенность синтаксиса а особенность обработки запроса...
 

Вурдалак

Продвинутый новичок
Ну это скорее не особенность синтаксиса а особенность обработки запроса...
Я не знаю что ты подразумеваешь под этой фразой, но помимо регулярных выражений у тебя тут есть ещё один слой — SQL запрос. Для корректного оформления строкового литерала в MySQL требуется экранировать как минимум кавычки, апострофы и бэкслеш. Бэкслеш ты не экранировал.
 
Сверху