DECODE 関数

※ Decode関数は、Oracle 独自関数のため、標準の CASE 式で記述した方が移植性の点で優れる。(性能は不明。)

※ Oracle 8 までは、CASE 式がサポートされていないため、Decode 関数を使用する。

field1 = '10' の件数を数える

select sum(decode(field1,'10',1,0)) FROM table1
select count(field1) FROM table1 where field1 ='10' 

と同じだが

select 
 sum(decode(field1,'10',1,0)), 
 sum(decode(field1,'20',1,0)) 
FROM table1

の様な書き方ができるので、集計表示などで便利。

field2 が 1 なら '男' 、それ以外なら '女' と出力する。

select decode (field2,1,'男','女') from  table2 ; 

field2 が 1 なら '男' 、2 なら'女'、それ以外なら'不明'と出力する。

select decode (field2,1,'男',2,'女','不明') from  table2 ;

CASE 式による書き直し

上記の例

select 
 sum(decode(field1,'10',1,0)), 
 sum(decode(field1,'20',1,0)) 
FROM table1;

を、CASE 式にて書き直してみると、

select 
 sum(case when field1='10' then 1 else 0 end), 
 sum(case when field1='20' then 1 else 0 end) 
FROM table1;

となります。

選択肢 投票
参考になった 15  
参考にならなかった 2  


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-14 (金) 14:59:12 (3963d)