これらの短い方法にはすべていくつかの欠点があります。それらは遅く、直感的でなく、バグが発生する可能性があり(可能な限りマジック値を避けます)、AND / OR / IS NULL / ISNOTNULLなどの通常の条件よりも独自仕様です。
NVL、DECODE、COALESCEなどは、思ったよりも高くつく可能性があります。
私はこれをいくつかの異なる状況で何度も見てきました。簡単な例を次に示します。
--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;
/
論理的な方法で入力するために、余分な時間を費やすことをお勧めします。コードの見栄えが良くなり、実行速度も速くなります。