LIKE работает нормально а NOT LIKE не корректно

FRIE

Новичок
Привет народ!

Запрос
SELECT * FROM `cap` WHERE `color` LIKE '%красный%,%голубой%'

работает нормально, выбираются записи в которых есть и красный и голубой

Запрос
SELECT * FROM `cap` WHERE `color` NOT LIKE '%красный%,%голубой%'

выбирает записи , по не понятной логике, среди выбранных записей встречаются записи где есть красный и записи где есть голубой.

Запрос с одним цветом
SELECT * FROM `cap` WHERE `color` NOT LIKE '%красный%'
выбирает все записи где нету красного - корректно

Все цвета находятся в поле TEXT colors, указаны через запятую все имеющиеся цвета у шапки.


Помогите разобраться в чём тут проблема. Как выбрать шапки с цветами которых быть не должно?
 

Adelf

Administrator
Команда форума
FRIE
Все правильно работает. Первые два запроса должны давать полностью разный результат. Т.е. во втором то, чего нет в первом. Очевидно ж.
 

Sufir

Я не волшебник, я только учусь
Для исключения как-то так должно быть:
Код:
SELECT * FROM `cap` 
WHERE NOT ( `color` LIKE '%красный%' OR `color` LIKE '%голубой%' )
 

Adelf

Administrator
Команда форума
Sufir
Цель этого форума направить на нужный ответ, а не дать его.
 

FRIE

Новичок
Sufir
Цель этого форума направить на нужный ответ, а не дать его.
Ваше величество, цель этого форума помочь нуждающимся в помощи. В официальной документации mysql только одно условие в NOT LIKE которое не требуется заключать в скобки. Я его сделал по аналогии с LIKE.
 

iceman

говнокодер
FRIE
причем тут документация - NOT всего-лишь ИНВЕРСИЯ ТОГО что даст ИСТИНУ в запросе
 

Absinthe

жожо
Ваше величество, цель этого форума помочь нуждающимся в помощи.
На ни у одного нормального форума нет такой цели, форумы с данной целью пустынны.
Форум - это средство тематического общения.
 
Сверху