Disse kortere metoder har alle adskillige ulemper. De er langsomme, uintuitive, potentielt buggy (undgå magiske værdier, når det er muligt), og mere proprietære end normale forhold som AND/OR/IS NULL/IS NOT NULL.
NVL, DECODE, COALESCE osv. kan være dyrere end du tror.
Jeg har set dette mange gange i flere forskellige sammenhænge, her er et simpelt eksempel:
--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;
/
Jeg anbefaler, at du bruger det ekstra sekund på at skrive det på den logiske måde. Din kode vil se bedre ud og køre hurtigere.