|
|
前のページ 1 2
|
|
DECODE関数
|
OracleのDECODE関数(リスト8)は、列の値によって返す値を変えることができる便利な関数です。PostgreSQLには等価な働きをするCASE文(リスト9)があるので【注2】、それに変更します。
|
SELECT 担当者名,
DECODE( 性別,
0, '女性',
1, '男性',
NULL ) "性別"
FROM 担当者マスタ
ORDER BY 担当者名;
|
リスト8:OracelのDECODE関数本文
|
SELECT 担当者名,
CASE 性別
WHEN 0 THEN '女性'
WHEN 1 THEN '男性'
ELSE NULL
END AS "性別"
FROM 担当者マスタ
ORDER BY 担当者名;
|
リスト9:PostgreSQLのCASE文
|
※注2:
なお、Oracleでは、9iからCASE文も使えます。
|
|
図14は実行結果です。
|
担当者名 |
| |
性別 |
---------- |
+ |
------ |
伊藤 |
| |
女性 |
宇賀神 |
| |
男性 |
岡田 |
| |
男性 |
佐瀬 |
| |
男性 |
斎藤 |
| |
男性 |
小野 |
| |
男性 |
小林 |
| |
女性 |
藤本 |
| |
男性 |
鈴木 |
| |
男性 |
(9 rows) |
|
図14:CASE文の実行結果
|
NVL、NVL2、COALESCE関数
|
Oracleには、最初のNULLでない値を返す、便利なNVL関数があります。
|
SELECT 商品名, NVL( 卸単価, 0 ) "卸単価"
FROM 商品マスタ;
|
|
PostgreSQLにも等価な機能を持つCOALESCE関数がありますので、それに変更します。COALESCE関数【注3】は可変個の引数を取りますので、OracleのNVL2関数も同様に変更できます。
|
※注3:
Oracle 9iからはCOALESCE関数が使えます。
|
|
SELECT 商品名, COALESCE( 卸単価, 0 )
AS "卸単価" FROM 商品マスタ;
|
|
図15は実行結果です。
|
商品名 |
| |
卸単価 |
------------------------ |
+ |
-------- |
デスクトップ型パソコン |
| |
180000 |
ノート型パソコン |
| |
270000 |
17型_ディスプレイ |
| |
50000 |
19型_ディスプレイ |
| |
95000 |
15型_液晶ディスプレイ |
| |
120000 |
デジタルカメラ |
| |
0 |
プリンタ |
| |
25000 |
スキャナ |
| |
30000 |
HUB |
| |
7000 |
ターミナルアダプタ |
| |
20000 |
(10 rows) |
|
図15:COALESCE関数の実行結果
|
前のページ 1 2
|
|
|
|
著者プロフィール
奥畑 裕樹(OKUHATA, Hiroki)
Javaとオープンソース技術を得意とする技術コンサルタント。最近のテーマは、ソフトウェア開発の全体最適をはかること。気が付けば、10才のときにプログラミングを始めて以来、常に何かを作っている…。
|
|
|
|