Предикат неопределенного значения

Функция

Определение проверки на NULL-значение.

Спецификация
 
<предикат неопределенного значения>::=
Общие правила
  1. <Значимое выражение> не должно быть <запросом выборки>.

  2. Если <предикат неопределенного значения> является <предикатом внешнего соединения в стиле ORACLE>, то:

    • конструкция '<значимое выражение> IS NOT NULL' игнорируется (если оператор внешнего соединения (+) опустить, то предикат IS NOT NULL выполнится, и результат запроса, написанного ниже, не будет содержать записей).

      create or replace table test
      ( a BIGINT not null,
        b INTEGER null,
        c BIGINT null
      );
      insert into test (a,b,c) values (1,1,1);
      insert into test (a,b,c) values (2,null,2);
      insert into test (a,b,c) values (3,1,null);
      insert into test (a,b,c) values (4,null,null);
      insert into test (a,b,c) values (5,1,5);

      Запрос:

      select *
        from test t1, test t2
       where t1.b=1
         and t1.a=t2.c(+)
         and t2.a(+) is not null
         and t2.c(+)=2;

      эквивалентен:

      select *
        from test t1, test t2
       where t1.b=1
         and t1.a=t2.c(+)
         and t2.c(+)=2;
    • в конструкции '<значимое выражение> IS NULL' оператор внешнего соединения игнорируется (т.е. если оператор внешнего соединения (+) опустить, то предикат IS NULL выполнится, и результаты запросов, написанных ниже, будут эквивалентны).

      Запрос:

      select *
        from test t1, test t2
       where t1.b=1
         and t1.a=t2.c(+)
         and t2.a(+) is null
         and t2.c(+)=2;

      эквивалентен:

      select *
        from test t1, test t2
       where t1.b=1
         and t1.a=t2.c(+)
         and t2.a is null
         and t2.c(+)=2;
  3. Конструкция '<значимое выражение> IS NULL' имеет одно из двух значений: истина (TRUE) или ложь (FALSE).

  4. Конструкция '<значимое выражение> IS NULL' истинна только тогда, когда <значимое выражение> имеет NULL-значение.

  5. Конструкция '<значимое выражение> IS NOT NULL' эквивалентна конструкции 'NOT (<значимое выражение> IS NULL)'.

  6. <Значимое выражение> может быть задано , который должен содержать спецификацию типа данных параметра.

    select count(*) from auto where  ? (int) is not null;
    5
    |  1000|
    select count(*) from auto where  ? (int) is not null;
    NULL
    |        0|
Пример
select * from person where age is not null;