Предикат неопределенного значения
Функция
Определение проверки на NULL-значение.
Спецификация
::=
Общие правила
-
< Значимое выражение >
не должно быть< запросом выборки >
. -
Если
< предикат неопределенного значения >
является< предикатом внешнего соединения в стиле 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;
-
-
Конструкция
'< значимое выражение > IS NULL'
имеет одно из двух значений: истина (TRUE) или ложь (FALSE). -
Конструкция
'< значимое выражение > IS NULL'
истинна только тогда, когда< значимое выражение >
имеет NULL-значение. -
Конструкция
'< значимое выражение > IS NOT NULL'
эквивалентна конструкции'NOT (< значимое выражение > IS NULL)'
. -
< Значимое выражение >
может быть задано< 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;