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. |