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