SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK