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.
Источник.
Комментариев нет:
Отправить комментарий