SAK 図書館
SQL 特殊関数 - 等価判断、最大判断、最小判断、ヌル変換
Oracle 固有の部分があるかもしれません。SQL-Server、MDB では注意のこと。
■等価判断
・decode() 関数は、等価条件判断(if 文判定) として使える。
この例では、受注数が NULL のとき 0 を返し、そうでないとき受注数その
ものを返す。
select 品番, decode(受注数, NULL, 0, 受注数) from sak.受注m
order by 品番
;
・2 番目、3 番目のパラメタを複数列挙することができる。
-- C 言語風ケース文イメージコード --
switch(品番) {
case 'a001':
return('TV');
case 'b002':
関数...
return('VTR');
case 'c003':
関数...
return('DVD');
default:
return('未定義');
}
------------------------------------
select 品番, decode(品番, 'a001', 'TV', 'b002', 'VTR', 'c003', 'DVD', '未定義') from sak.受注m
order by 品番
;
■最大判断
・greatest() 関数は、最大条件判断(if 判定) として使える。
この例では、受注数が 0 以下のものは 0 を返し、そうでないとき受注数
そのものを返す。パラメタは複数指定できる。
select 品番, greatest(受注数, 0) from sak.受注m
order by 品番
;
■最小判断
・least() 関数は、最小条件判断(if 判定) として使える。
この例では、受注数が 500 以上のものは 500 を返し、そうでないとき受注
数そのものを返す。パラメタは複数指定できる。
select 品番, least(受注数, 500) from sak.受注m
order by 品番
;
■ヌル変換
・nvl() 関数は、NULL 項目の代替え値指定として使える。
この例では、受注数が NULL のものは 0 を返し、そうでないとき受注数
そのものを返す。
select 品番, nvl(受注数, 0) from sak.受注m
order by 品番
;
■ヌル変換 (Oracle8i 以降)
・nvl2() 関数は、データ1 が NULL のときデータ3 を返す。
データ1 が NULL でなければデータ2 が返る。
・次の例は、'def' が返る。
select nvl2(null, 'abc', 'def') from dual;
・次の例は、'abc' が返る。
select nvl2('012', 'abc', 'def') from dual;
■ヌル判定 (Oracle9i 以降)
・coalesce() 関数は、最初の null でないデータを返す。
これは便利かもしれない。
・次の例は、'abc' が返る。
select coalesce(null, 'abc', 'def') from dual;
■ヌル比較 (Oracle9i 以降)
・nullif() 関数は、等しければ null が、等しくなければデータ1 が返る。
・次の例は、null が返る。
select nullif('abc', 'abc') from dual;
・次の例は、'abc' が返る。
select nullif('abc', 'def') from dual;
■SQL 基礎実地編資料
■SQL 基礎編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料