Todos esses métodos mais curtos têm várias desvantagens. Eles são lentos, não intuitivos, potencialmente cheios de bugs (evite valores mágicos sempre que possível) e mais proprietários do que condições normais como AND/OR/IS NULL/IS NOT NULL.
NVL, DECODE, COALESCE, etc., podem ser mais caros do que você pensa.
Eu já vi isso muitas vezes em vários contextos diferentes, aqui está um exemplo simples:
--Shorter method: Takes about 0.45 seconds
declare
j number;
begin
for i in 1 .. 1000000 loop
j := i;
if nvl(i <> j, (i is null) <> (j is null)) then
null;
end if;
end loop;
end;
/
--Normal method: Takes about 0.25 seconds
declare
j number;
begin
for i in 1 .. 1000000 loop
j := i;
if i <> j or (i is null and j is not null) or (i is not null and j is null) then
null;
end if;
end loop;
end;
/
Eu recomendo que você gaste o segundo extra para digitá-lo da maneira lógica. Seu código terá uma aparência melhor e será executado mais rapidamente.