Basic Elements of Oracle SQL
Nulls
Ссылка на документацию.
В Oracle пустая строка эквивалентна NULL, поэтому сравнение некоего значения с пустой строкой фактически ведет к сравнению его с NULL. В результате получается NULL:
set serveroutput on / declare b boolean := 'A' = ''; begin dbms_output.enable(20000); if b then dbms_output.put_line('TRUE'); elsif not b then dbms_output.put_line('FALSE'); elsif b is null then dbms_output.put_line('NULL'); else dbms_output.put_line('UNKHOWN'); end if; end; /Получаем результат:
NULL
Следует учесть следующее:
declare b boolean := 'A' = ''; begin dbms_output.enable(20000); if b then dbms_output.put_line('TRUE'); else dbms_output.put_line('NOT TRUE'); end if; end; /Получим:
NOT TRUE
Т.е. выполнение "провалилось" в ELSE, но это не значит, что b = FALSE. Точно также выполнение перейдет в блок ELSE, если сперва проверить if not b.
Источник.
Комментариев нет:
Отправить комментарий