Dessa kortare metoder har alla flera nackdelar. De är långsamma, ointuitiva, potentiellt buggiga (undvik magiska värden när det är möjligt) och mer proprietära än normala förhållanden som OCH/ELLER/ÄR NULL/ÄR INTE NULL.
NVL, DECODE, COALESCE, etc., kan vara dyrare än du tror.
Jag har sett detta många gånger i flera olika sammanhang, här är ett enkelt exempel:
--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;
/
Jag rekommenderar att du lägger den extra sekunden på att skriva det logiskt. Din kod kommer att se bättre ut och köras snabbare.