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