SAK 図書館
SQL 数値関数 - 余り、四捨五入、切り捨て、切り上げ、数値フォーマット他
基本的に Oracle、SQL-Server、MDB で共通です。
■ビット論理積 (Oracle8i 以降)
・bitand() 関数は、ビット論理積を返す。
ビットマスクに使用できるので便利である。
select bitand(255, 4) from dual;
select decode(bitand(255, 4), 1, '1', 'not 1') from dual;
■絶対値
・abs() 関数は、絶対値を返す。
この例では、受注数にマイナスがあっても正数として問い合わされる。
select 品番, abs(受注数) from sak.受注m
order by 品番
;
■余り
・mod() 関数は、余りを返す。
この例では、受注数を 1000 で割ったあまりが問い合わされる。
select 品番, mod(受注数, 1000) from sak.受注m
order by 品番
;
■四捨五入
・round() 関数は、四捨五入結果を返す。
この例では、受注数の小数第 3 位を四捨五入して、小数 2 桁の結果が問い
合わされる。
select 品番, round(受注数, 2) from sak.受注m
order by 品番
;
■切り捨て
・trunc() 関数は、切り捨て結果を返す。
この例では、受注数の小数 3 桁目以降を切り捨て、小数 2 桁の結果が問い
合わされる。
select 品番, trunc(受注数, 2) from sak.受注m
order by 品番
;
■切り上げ
・切り上げ関数が見当たらない。(^^;
trunc() に +9 すれば良いでしょう。
この例では、受注数の小数第 3 位を切り上げたと同じ結果になります。
select 品番, trunc(受注数 + .009, 2) from sak.受注m
order by 品番
;
未満切り上げの場合は、+99... など工夫します。
次の例は、固定小数部 6 桁を小数部 2 桁未満で切り上げしています。
select 品番, trunc(123.123456 + .009999, 2) from sak.受注m
order by 品番
;
■以上で最小の整数
・ceil() 関数は、引数に対して、それ以上で、最小の整数値を返す。
マイナス値に対しては、四捨五入のように動作しないので注意のこと。
select
ceil(10.345), ceil(-10.345),
trunc(10.345 + .9, 0), trunc(-10.345 + .9, 0) -- 小数第一位切り上げ
from dual;
■以下で最大の整数
・floor() 関数は、引数に対して、それ以下で、最小の整数値を返す。
マイナス値に対しては、四捨五入のように動作しないので注意のこと。
select
floor(10.345), floor(-10.345),
trunc(10.345, 0), trunc(-10.345, 0)
from dual;
■スクエアルート
・sqrt() 関数は、平方根を返す。
むちゃくちゃな例ですが、使い方はわかるでしょう。
select 品番, sqrt(受注数) from sak.受注m
order by 品番
;
■べき乗
・power() 関数は、べき乗を返す。
この例では、2^8 が返る。
select power(2, 8) from dual
;
■数値から文字列へ変換 (数値フォーマット、書式変換)
・to_char() 関数は、数値を文字列型に変換します。
この例では、受注数を文字列として返します。
select 品番, to_char(受注数) from sak.受注m
order by 品番
;
・三桁毎に数値にカンマ「,」を入れたい場合、次のようにします。
select 品番, to_char(受注数, '999,999,999,999') from sak.受注m
order by 品番
;
・小数点以下をフォーマットする場合は、次のようにします。
select 品番, to_char(受注数, '999,999,999,999.99') from sak.受注m
order by 品番
;
・ゼロ埋め(0 埋め) フォーマットする場合は、次のようにします。
select 品番, to_char(受注数, '000000000') from sak.受注m
order by 品番
;
■文字列から数値へ変換
・to_number() 関数は、文字列を数値に変換します。
この例では、受注数を文字列としたものを、また数値に変換しています。
現実的な例ではありませんが機能はわかるはずです。
select 品番, to_number(to_char(受注数)) from sak.受注m
order by 品番
;
■型変換
・cast() 関数は、ANSI 規程の変換関数です。
SQL-Server の convert() 関数は、Oracle では、to_char()、to_number()、
to_date() に相当します。
select 品番, cast(受注数 as varchar2(20)) from sak.受注m
order by 品番
;
select cast('99-01-01' as date) from dual;
■SQL 基礎実地編資料
■SQL 基礎編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料