SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.11.2010 15:59:51

RegEditor
Участник
Зарегистрирован: 01.11.2010
Сообщений: 4

Некорректная выборка регулярного выражения

Подскажите, в чем проблема - не могу найти ошибку.
Строка: 1_1|fieldsep|1_2
Рег. выражение: ^.*\|fieldsep2\|.*$
Проблема в том, что это выражение выдает результатом true, хотя после слова fieldsep в регвыражении присутствует еще один символ.

Неактивен

 

#2 01.11.2010 16:18:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Некорректная выборка регулярного выражения

Экранирование где-то потеряли:

Код:

mysql> SELECT '1_1|fieldsep|1_2' RLIKE '^.*\|fieldsep2\|.*$ ';
+-------------------------------------------------+
| '1_1|fieldsep|1_2' RLIKE '^.*\|fieldsep2\|.*$ ' |
+-------------------------------------------------+
|                                               1 |
+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT '1_1|fieldsep|1_2' RLIKE '^.*\\|fieldsep2\\|.*$';
+--------------------------------------------------+
| '1_1|fieldsep|1_2' RLIKE '^.*\\|fieldsep2\\|.*$' |
+--------------------------------------------------+
|                                                0 |
+--------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT '1_1|fieldsep2|1_2' RLIKE '^.*\\|fieldsep2\\|.*$';
+---------------------------------------------------+
| '1_1|fieldsep2|1_2' RLIKE '^.*\\|fieldsep2\\|.*$' |
+---------------------------------------------------+
|                                                 1 |
+---------------------------------------------------+
1 row in set (0.00 sec)

Неактивен

 

#3 01.11.2010 17:18:01

RegEditor
Участник
Зарегистрирован: 01.11.2010
Сообщений: 4

Re: Некорректная выборка регулярного выражения

это уже интересно... у меня второй запрос выдал единицу((
кстати, в JS-скрипте аналогичное выражение исправно срабатывает
версия 5.0.90, хостинг majordomo
у кого-нибудь есть идеи? смена хостинга невозможна.

Неактивен

 

#4 01.11.2010 17:26:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Некорректная выборка регулярного выражения

А проверяете в каком клиенте? Учтите, что часть слешей может съедать
клиент, если он неудачный (например, phpMyAdmin).

Неактивен

 

#5 01.11.2010 17:39:35

RegEditor
Участник
Зарегистрирован: 01.11.2010
Сообщений: 4

Re: Некорректная выборка регулярного выражения

неа, я в своем php скрипте делаю запрос через mysql_query(), и через mysql_result считываю результат.

Неактивен

 

#6 01.11.2010 18:07:33

RegEditor
Участник
Зарегистрирован: 01.11.2010
Сообщений: 4

Re: Некорректная выборка регулярного выражения

в итоге правильным оказался вариант аж с тремя слешами:
SELECT '1_1|fieldsep2|1_2' RLIKE '^.*\\\|fieldsep2\\\|.*$';
правда, до конца так и не понял почему так..

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson