#sql #oracle
#sql #Oracle
Вопрос:
Почему в Oracle SQL эти операции возвращают no data found
SELECT job_id
FROM HR.EMPLOYEES
WHERE job_id NOT IN ('');
Разве пустая строка не должна означать, что мы должны получить все данные?
Ответ №1:
Ваша интерпретация верна. Но не в Oracle.
Oracle рассматривает пустую строку как синоним NULL
. И, поскольку NOT IN (NULL)
возвращает NULL
для любого сравнения, ничто не оценивается как TRUE (потому NULL
что не является true).
Поведение, которое вы ожидаете, является правильным поведением и тем, как любая другая база данных будет интерпретировать это.