Предикат неопределенного значения
Функция
Определение проверки на 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;