【PostgreSQL】Decode関数

2020年6月21日

スポンサーリンク

説明

OracleのDecode関数まがいのものです。

条件に合致した場合は指定した値が返ります。合致しない場合、別の指定した値が返ります。

 

引数

引数1(numeric):チェックする値

引数2(numeric):条件値

引数3(numeric):条件値に一致する場合の返り値

引数4(numeric):条件に一致しない場合の返り値

 

返り値

引数3の値、もしくは引数4の値

 

コード

CREATE OR REPLACE FUNCTION decode(
    numeric,
    numeric,
    numeric,
    numeric)
  RETURNS integer AS
$BODY$
declare

	n_target	    alias for $1;  --引数1:チェックする値
	n_conditions	alias for $2;  --引数2:条件値
	n_return	    alias for $3;  --引数3:条件値に一致する場合の返り値
	n_else_return	alias for $4;  --引数4:条件に一致しない場合の返り値

BEGIN

	if n_target = n_conditions then
	return n_return;
	end if;

	return n_else_return;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION decode(numeric, numeric, numeric, numeric)
  OWNER TO postgres;

 

実行例

select * from decode(777,777,888,999);
--777

 

他にもこんな関数があります(数値操作の関数)

数値であるかのチェック(IsNumeric)

四捨五入(Round)

消費税を計算する(8%、10%対応)

ランダム値を生成する(Rand)

数値をカンマで区切る