Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql REGEXP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема такая:
Этот запрос находит 2 записи:
 
SELECT * FROM post WHERE category REGEXP("(^|,)(13)(,|$)") ORDER BY date DESC
 
А этот:
 
 
 
Добавлено:
SELECT * FROM post WHERE !(category REGEXP("(^|,)(13)(,|$)")) ORDER BY date DESC
 
А этот на 10 меньше чем без условия, а не на 2 как должно было бы быть
 
Добавлено:
В поле category перечисляются числа через запятую, одно число или пустота.
 
Добавлено:
В php следующее выражение исключило бы все записи с числом 13:
/(?!(^|,)(13)(,|$))/
 
Добавлено:
Или что-то подобное... но в mysql такое это не предусмотрено.
 
Добавлено:
HELP
 
Добавлено:
Как написать регулярное выражение, дающее противоположный результат REGEXP("(^|,)(13)(,|$)") ??
 
Добавлено:
Интересный случай.
Смотрите.
 
Запрос без условия выбирает 44 результата.
SELECT * FROM post
 
Запрос
SELECT * FROM post WHERE category REGEXP(",(13)$") ORDER BY date DESC
находит 2 результата
 
А запрос
SELECT * FROM post WHERE category NOT REGEXP(",(13)$") ORDER BY date DESC
или запрос-синоним
SELECT * FROM post WHERE !(category REGEXP(",(13)$")) ORDER BY date DESC
находит 23 результата вместо 42!
 
Добавлено:
Оказалось что NULL не проверяется, дает TRUE.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 00:27 21-12-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql REGEXP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru