Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему не работает конструкция в WHERE ?  [new]
Morskoi_kotik
Member

Откуда:
Сообщений: 25
Подскажите, пожалуйста!

Задаю условие в WHERE:

WHERE DATE>='2020-01-01'

AND PROD_DATE >= '2020-03-01'

AND PROD_DATE < '2021-04-01'

AND CATEGORY = 5 AND (PROD_NAME NOT LIKE '%Молочн%' OR PROD_NAME NOT LIKE '%МОЛОЧН%' OR PROD_NAME NOT LIKE '%мясн%' )


Т.е. мне нужно выбрать все товары, которые относятся к категории 5 и НЕ содержат в наименовании слово молочные и мясные (в разных склонениях). При этом слово молочные может быть записано в разных регистрах. Так вот, данная конструкция у меня не работает. Если закомментить --AND (PROD_NAME NOT LIKE '%Молочн%' OR PROD_NAME NOT LIKE '%МОЛОЧН%' OR PROD_NAME NOT LIKE '%мясн%' ) и раскомментить, то выводится одна и та же сумма. А если пропишу вот так, например:
WHERE DATE>='2020-01-01'

AND PROD_DATE >= '2020-03-01'
AND PROD_DATE < '2021-04-01'

AND CATEGORY = 5 AND PROD_NAME NOT LIKE '%Молочн%'

то по слову Молочн фильтрует. Где я ошибаюсь?
18 ноя 21, 17:19    [22397620]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
Oleg_SQL
Member

Откуда: от туда
Сообщений: 241
Morskoi_kotik,

потому что если МЯСО, то (и не похоже на "молоко" или не похоже на "мясо") - сработает как не похоже на "молоко" )))

"Короче" - OR заменить на AND

Сообщение было отредактировано: 18 ноя 21, 17:25
18 ноя 21, 17:22    [22397623]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4705
Morskoi_kotik,

автор
AND PROD_DATE >= '2020-03-01'

AND PROD_DATE < '2021-04-01'
BETWEEN ?

автор
PROD_NAME NOT LIKE '%Молочн%' OR PROD_NAME NOT LIKE '%МОЛОЧН%
UPPER ?
18 ноя 21, 17:23    [22397625]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
Morskoi_kotik
Member

Откуда:
Сообщений: 25
Oleg_SQL,

Я попробую так. Ща не за компом. Но я как то фильтравал точно такой же конструкцией, только там нужно было отобрать позиции, которые содержат определенные слова. Но в текущем случае я не пойму почему не подходит OR
18 ноя 21, 17:44    [22397636]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
Oleg_SQL
Member

Откуда: от туда
Сообщений: 241
Morskoi_kotik,

я же выше написал

МЯСО проверяем:

Не похоже на молоко? Нет - дальше условие что оно не похоже на мясо уже не действует...
А если не похоже И на молоко И на мясо - тогда сработает
18 ноя 21, 17:47    [22397638]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Morskoi_kotik,

and not (молоч или мясн или птиц)
18 ноя 21, 18:02    [22397648]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
Morskoi_kotik,

Укажите в для строк запросе регистронезависимый COLLATE. Легче будет.
18 ноя 21, 22:44    [22397729]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает конструкция в WHERE ?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4434
Gerasimenko
Morskoi_kotik,

автор
AND PROD_DATE >= '2020-03-01'

AND PROD_DATE < '2021-04-01'
BETWEEN ?

автор
PROD_NAME NOT LIKE '%Молочн%' OR PROD_NAME NOT LIKE '%МОЛОЧН%
UPPER ?


Вопросы начинающего юзера:

1. вы уверены, что там between? не ошибка?
2. если не сложно - зачем там UPPER ?
21 ноя 21, 10:02    [22398540]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить