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

Функция

Определение проверки на 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;