понедельник, 26 апреля 2010 г.

Пустая строка в Oracle. Сравнение с пустой строкой

Oracle9i SQL Reference
   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.

Источник.

Комментариев нет:

Отправить комментарий