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

Функция

Определение проверки на 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. < Значимое выражение > может быть задано < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    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;