Использование Oracle 11gR2 Expression Edition. Мои данные выглядит следующим образом
Oracle NOT BETWEEN для сравнения строк не дает такого же результата, как <= and > =
ordertype
---------
ZOCO
ZOSA
ZOST
Мы пытаемся выяснить, запись, где столбец не между определенным диапазоном значений.
Если я выполнить запрос с < = и> = операторы: SELECT * FROM table where ordertype <= 'ZAAA' OR ordertype >= 'ZZZZ';
тогда я получаю 0 результатов. Это правильный ответ.
Однако, если я использую NOT BETWEEN: SELECT * FROM table where ordertype NOT BETWEEN 'ZAAA' AND 'ZZZZ';
, то это дает несколько хитов.
Мое понимание заключается в том, что оба синтаксиса должны давать одинаковый результат, но это не так. Что мне не хватает? Причина, по которой я хочу использовать NOT BETWEEN, потому что у нашего существующего кода уже есть этот синтаксис, и я не хочу его менять, не понимая причин.
спасибо.
Спасибо за всех, кто разместил. Я снова запустил запросы и после исправления «OR» в первом запросе результаты остались прежними. У меня все еще возникает вопрос, почему сортировка символов Oracle не распознает его, как ожидалось, но мой вопрос, касающийся разницы между NOT BETWEEN и <>, был ложным сигналом. Прошу прощения за путаницу.
Приносим извинения за типографию в моем вопросе выше. Первый запрос, который я хотел написать, был ordertype <= 'ZAAA' OR ordertype> = 'ZZZZ' – user3208146
Спасибо всем, кто разместил. Я снова запустил запросы и после исправления «OR» в первом запросе результаты остались прежними. У меня все еще возникает вопрос, почему сортировка символов Oracle не распознает его, как ожидалось, но мой вопрос, касающийся разницы между NOT BETWEEN и <>, был ложным сигналом. – user3208146
Теперь, после того, как вы изменили 'and' на' or', я вполне уверен, что оба оператора действительно возвращают одни и те же записи. Не могли бы вы запустить http://sqlfiddle.com/#!4/d8ac4/1 и сообщить нам, какие записи возвращены. Кроме того, сделайте 'select dump (ordertype) из таблицы, где ordertype NOT BETWEEN 'ZAAA' AND 'ZZZZ';' и опубликуйте результат. –