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 編資料