数値関数

ORACLEの数値関数のリファレンスです。

※当ページにおいて、検索結果イメージの半角スペースは【_】、NULLは【NULL】と表現しています。

スポンサーリンク

ABS

文法
ABS(引数1[数値型])

戻り値
数値型

説明
引数1の絶対値を戻す

SELECT a
      ,ABS(a) func
FROM   test_table
;

    A  FUNC
----- -----
    5     5
   -5     5
    0     0
スポンサーリンク

CEIL

文法
CEIL(引数1[数値型])

戻り値
数値型

説明
引数1以上の最も小さい整数を戻す

SELECT a
      ,CEIL(a) func
FROM   test_table
;

    A  FUNC
----- -----
    5     5
  5.1     6
   -5    -5
 -5.1    -5

FLOOR

文法
FLOOR(引数1[数値型])

戻り値
数値型

説明
引数1以下の最も大きい整数を戻す

SELECT a
      ,FLOOR(a) func
FROM   test_table
;

    A  FUNC
----- -----
    5     5
  5.1     5
   -5    -5
 -5.1    -6

MOD

文法
MOD(引数1[数値型],引数2[数値型])

戻り値
数値型

説明
引数1を引数2で除算した余りを戻す
※引数1 - 引数2 × TRUNC(引数1 ÷ 引数2)

SELECT a
      ,b
      ,MOD(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
    6     3     0
    7     3     1
   -7     3    -1
    7    -3     1
   -7    -3    -1

備考
引数2が0の場合(0割)、引数1を戻す

SELECT a
      ,b
      ,MOD(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
    6     0     6
   -6     0    -6

POWER

文法
POWER(引数1[数値型],引数2[数値型])

戻り値
数値型

説明
引数1の引数2乗を戻す(累乗計算)

SELECT a
      ,b
      ,POWER(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
    2     3     8
   -2     3    -8
    2     0     1
    2    -1   0.5

備考1
引数1が負数の場合、引数2は整数でないとエラーになる

SELECT POWER(-2,1.5) func
FROM   test_table
;

ORA-01428: 引数'-2'が有効範囲外です

備考2
引数1が0の場合、引数2は0以上でないとエラーになる

SELECT POWER(0,-1) func
FROM   test_table
;

ORA-01426: 数値オーバーフローが発生しました

ROUND

文法
ROUND(引数1[数値型],引数2[数値型])
※引数2を省略した場合は、0指定(整数に丸める)と同義

戻り値
数値型

説明
引数1を引数2で指定した桁で丸めた値を戻す(四捨五入)
0:整数に丸める
1:小数点以下1位に丸める
-1:整数10の位に丸める

SELECT a
      ,b
      ,ROUND(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
 5.55     0     6
 5.55     1   5.6
 5.55    -1    10
-5.55     0    -6
-5.55     1  -5.6
-5.55    -1   -10
SELECT a
      ,ROUND(a) func
FROM   test_table
;

    A  FUNC
----- -----
 5.55     6
-5.55    -6

SIGN

文法
SIGN(引数1[数値型])

戻り値
数値型

説明
引数1が正数の場合、1を戻す
引数1が負数の場合、-1を戻す
引数1が0の場合、0を戻す

SELECT a
      ,SIGN(a) func
FROM   test_table
;

    A  FUNC
----- -----
    5     1
   -5    -1
    0     0

SQRT

文法
SQRT(引数1[数値型])

戻り値
数値型

説明
引数1の平方根を戻す

SELECT a
      ,SQRT(a) func
FROM   test_table
;

    A  FUNC
----- -----
   25     5
    2 1.414
    0     0

備考
引数1が負数の場合、エラーとなる

SELECT SQRT(-1) func
FROM   test_table
;

ORA-01428: 引数'-1'が有効範囲外です

TO_CHAR

文法
TO_CHAR(引数1[数値型],引数2[文字型(数値書式フォーマット)])
※引数2を省略可能

戻り値
文字型

説明
引数1を引数2で指定したフォーマットで文字型に変換し戻す
※引数2を省略した場合は、40バイトまでは引数1の値をそのまま変換する

引数2の日時書式フォーマット(代表的なものを掲載)

書式モデル 説明
FM 前後の空白を除外、9指定されている小数部の後ろ0を除外
,(カンマ) 指定した位置に区切りを表すカンマ(複数指定可)
.(ドット) 指定した位置に小数点を表すドット(1か所のみ指定可)
0 指定桁が0の場合、0
9 指定桁が0の場合、半角スペース
S 符号(+ or -)
SELECT a
      ,TO_CHAR(a) func
FROM   test_table
;

      A FUNC
------- ---------
  12003 _12003
 -12003 -12003
SELECT a
      ,TO_CHAR(a,'000,000') func
FROM   test_table
;

      A FUNC
------- ---------
  12003 _012,003
 -12003 -012,003
SELECT a
      ,TO_CHAR(a,'FM000,000') func
FROM   test_table
;

      A FUNC
------- ---------
  12003 012,003
 -12003 -012,003
SELECT a
      ,TO_CHAR(a,'999,999') func
FROM   test_table
;

      A FUNC
------- ---------
  12003 __12,003
 -12003 _-12,003
SELECT a
      ,TO_CHAR(a,'FM999,999') func
FROM   test_table
;

      A FUNC
------- ---------
  12003 12,003
 -12003 -12,003

備考1
引数2でフォーマット指定した場合で、引数1の整数部があふれている場合、
正しく値を戻すことが出来ない

SELECT a
      ,TO_CHAR(a,'0,000') func
FROM   test_table
;

      A FUNC
------- ---------
  12003 ######

備考2
引数2でフォーマット指定した場合で、引数1の小数部があふれている場合、
あふれた部分を四捨五入し戻す

SELECT a
      ,TO_CHAR(a,'00,000') func
FROM   test_table
;

        A FUNC
--------- -----------
 12003.55 _12,004
SELECT a
      ,TO_CHAR(a,'00,000.0') func
FROM   test_table
;

        A FUNC
--------- -----------
 12003.55 _12,003.6

TO_NUMBER

文法
TO_NUMBER(引数1[文字型],引数2[文字型(数値書式フォーマット)])
※引数2を省略可能

戻り値
数値型

説明
引数1を数値型に変換し戻す
引数1のフォーマット型を引数2に指定する

引数2を省略した場合、前後のスペース、小数点、符号は問題なく変換可能

引数2の日時書式フォーマット(代表的なものを掲載)

書式モデル 説明
FM 前後の空白を除外、9指定されている小数部の後ろ0を除外
,(カンマ) 指定した位置に区切りを表すカンマ(複数指定可)
.(ドット) 指定した位置に小数点を表すドット(1か所のみ指定可)
0 指定桁が0の場合、0
9 指定桁が0の場合、半角スペース
S 符号(+ or -)
SELECT a
      ,TO_NUMBER(a) func
FROM   test_table
;

A             FUNC
-------- ---------
12003        12003
-12003      -12003
12003.4    12003.4
12003_       12003
_12003       12003

備考1
3桁ごとのカンマは、フォーマット指定が必要

SELECT TO_NUMBER('123,456') func
FROM   test_table
;

ORA-01722: 数値が無効です。
SELECT TO_NUMBER('123,456','999,999') func
FROM   test_table
;

     FUNC
---------
   123456

TRUNC

文法
TRUNC(引数1[数値型],引数2[数値型])
※引数2を省略した場合は、0指定(整数に丸める)と同義

戻り値
数値型

説明
引数1を引数2で指定した桁で切捨てた値を戻す
0:小数部を切捨てる
1:小数点以下第2位以降を切捨てる
-1:整数1の位以降を切捨てる

SELECT a
      ,b
      ,TRUNC(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
 5.55     0     5
 5.55     1   5.5
 5.55    -1     0
-5.55     0    -5
-5.55     1  -5.5
-5.55    -1     0
SELECT a
      ,TRUNC(a) func
FROM   test_table
;

    A  FUNC
----- -----
 5.55     5
-5.55    -5
タイトルとURLをコピーしました