Diese kürzeren Methoden haben alle mehrere Nachteile. Sie sind langsam, nicht intuitiv, möglicherweise fehlerhaft (vermeiden Sie magische Werte, wann immer möglich) und proprietärer als normale Bedingungen wie UND/ODER/IST NULL/IST NICHT NULL.
NVL, DECODE, COALESCE usw. können teurer sein als Sie denken.
Ich habe das oft in verschiedenen Kontexten gesehen, hier ist ein einfaches Beispiel:
--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;
/
Ich empfehle Ihnen, die zusätzliche Sekunde zu verbringen, um es auf logische Weise einzugeben. Ihr Code wird besser aussehen und schneller ausgeführt werden.