SAK 図書館
PostgreSQL 編12 - 数値関数、余り、四捨五入、切り捨て、切り上げ、数値書式
■絶対値
・abs() 関数は、絶対値を返す。
select abs(-123);
abs
-----
123
select key, abs(data1) from testm;
■余り
・mod() 関数は、余りを返す。
select mod(123, 10);
mod
-----
3
select key, mod(data1, 10.0) from testm;
■四捨五入
・round() 関数は、四捨五入結果を返す。
select round(10.345, 2);
round
-------
10.35
select key, round(data1, 2) from testm;
■切り捨て
・trunc() 関数は、切り捨て結果を返す。
select trunc(10.345, 2);
trunc
-------
10.34
select key, trunc(data1, 2) from testm;
■切り上げ
・trunc() に +9 すれば良いでしょう。
この例では、小数第 1 位を切り上げたと同じ結果になります。
select trunc(10.345 + .9, 0);
trunc
-------
11
未満切り上げの場合は、+99... など工夫します。
次の例は、固定小数部 6 桁を小数部 2 桁未満で切り上げしています。
select trunc(10.345678 + .009999, 2);
trunc
-------
10.35
■以上で最小の整数
・ceil() 関数は、引数に対して、それ以上で、最小の整数値を返す。
マイナス値に対しては、四捨五入のように動作しないので注意のこと。
select
ceil(10.345), ceil(-10.345),
trunc(10.345 + .9, 0), trunc(-10.345 + .9, 0) -- 小数第一位切り上げ
;
ceil | ceil | trunc | trunc
------+------+-------+-------
11 | -10 | 11 | -9
■以下で最大の整数
・floor() 関数は、引数に対して、それ以下で、最小の整数値を返す。
マイナス値に対しては、四捨五入のように動作しないので注意のこと。
select
floor(10.345), floor(-10.345),
trunc(10.345, 0), trunc(-10.345, 0)
;
floor | floor | trunc | trunc
------+-------+-------+-------
10 | -11 | 10 | -10
■スクエアルート
・sqrt() 関数は、平方根を返す。
select sqrt(2.0);
sqrt
-----------------
1.4142135623731
■べき乗
・pow() 関数は、べき乗を返す。
この例では、2^8 が返る。
select pow(2.0, 8);
pow
-----
256
■数値から文字列へ変換 (数値フォーマット、書式変換)
・to_char() 関数は、数値を文字列型に変換します。
単純な to_char(123456) は、明示的にする必要がないようです。
「数値 || 数値」すると自動的に文字変換され結合されます。
select 123456 || 789012;
?column?
--------------
123456789012
・三桁毎に数値にカンマ「,」を入れたい場合、次のようにします。
select to_char(123456, '999,999,999,999');
to_char
------------------
123,456
・小数点以下をフォーマットする場合は、次のようにします。
select to_char(123456, '999,999,999,999.99');
to_char
---------------------
123,456.00
・ゼロ埋め(0 埋め) フォーマットする場合は、次のようにします。
select to_char(123456, '000000000000');
to_char
---------------
000000123456
■文字列から数値へ変換
・to_number() 関数は、文字列を数値に変換します。
select to_number('00123456', '000000000000');
to_number
-----------
123456
select to_number('123,456', '999,999,999,999');
to_number
-----------
123456
select to_number('123' || '456', '999999999999');
to_number
-----------
123456
■型変換
・cast() 関数は、ANSI 規程の変換関数です。
select cast('123' || '456' as int8);
int8
--------
123456
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料