 |
|
| 前のページ 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才のときにプログラミングを始めて以来、常に何かを作っている…。
|
|
 |
|
 |
|