Путаница в неработающем ORACLE SQL

#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).

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