![]() |
Запрос с множеством невходящих
Всем здрасьте.
Нужно как то написать запрос который будет выбирать все записи которые не содержат 45 перечисленных записей. Where ([oboz] not like '%СБ') or ([oboz] not like '%ТУ') or ....И так 45 or'ов и так не работает. Как правильно то? |
blackeangel, я не знаком с диалектом SQL в варианте MySQL, но попробуйте посмотреть, нет ли у него конструкции наподобие NOT IN с подзапросом.
Навскидку, скажем: MySQL :: MySQL 5.7 Reference Manual :: 14.2.10.3 Subqueries with ANY, IN, or SOME MySQL :: MySQL 5.7 Reference Manual :: 14.2.10.6 Subqueries with EXISTS or NOT EXISTS (сразу говорю, что даже не разбирался, то ли это). |
Цитата:
Мне вообще это для бейсика надо... Может, я и не в ту сторону копаю. В общем мне надо выполнить запрос в котором отсеятся все значения на конце которых содержатся перечисленные сочетания букв. То есть они не должны попасть. |
Что значит «просто SQL»? «Просто SQL» не бывает. Есть стандарт (точнее стандарты разных годов), есть производители ПО со своими продуктами, каждый из которых обладает своим диалектом SQL, каждый из которых поддерживает стандарт в той или иной степени.
Ваша ошибка в запросе вида: Цитата:
Скрытый текст
![]() Вам следует использовать либо такой синтаксис: Код:
SELECT * FROM myschema.sometable Where oboz not like '%СБ' and oboz not like '%ТУ'; Код:
SELECT * FROM myschema.sometable Where not (oboz like '%СБ' or oboz like '%ТУ'); Скрытый текст
![]() Но самым правильным будет использование оператора REGEXP: Код:
SELECT * FROM myschema.sometable WHERE oboz NOT REGEXP '(СБ|ТУ)$'; |
Цитата:
И что обозначает $ в конце? |
|
Iska, так будет правильно?
Код:
...NOT REGEXP '(СБ|ТУ|РР|ИМ|ДИ...)$' |
blackeangel, да.
|
Время: 01:27. |
Время: 01:27.
© OSzone.net 2001-