トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-116 二値論理のような比較

SQLパズル

ColAとColBを比較する。
ただしnullとnullは等しい扱いとする。


SQL

select ColA,ColB,
case when nvl(ColA,ColB) is null or ColA=ColB
     then '等しい' else '等しくない' end as 方法1,
case when exists(select ColA from dual
                 intersect
                 select ColB from dual)
     then '等しい' else '等しくない' end as 方法2,
case when decode(ColA,ColB,1,0) = 1
     then '等しい' else '等しくない' end as 方法3,
case when ColA is null and ColB is null
          or ColA = ColB
     then '等しい' else '等しくない' end as 方法4
from (select 1 as ColA,1 as ColB from dual
union select 1,null from dual
union select null,1 from dual
union select null,null from dual);


解説

decode関数や、集合演算では、
二値論理のような比較ができます。