数値文字列、浮動小数点型を NUMBER 型に変換

syntax

TO_NUMBER ( expr [, format [, nls_param]] )
return [ number ]

parameter

expr数値文字列式、浮動小数点式
formatフォーマット文字列
nls_param各国語サポートパラメータ

return

  • フォーマット書式に従って変換された NUMBER 型

avail

  • SQL および PL/SQL の両方で使用可能。

フォーマット文字列

各国語サポートパラメータ

nls_param の種類設定例
NLS_NUMERIC_CHARACTERSNLS 関連パラメータ 参照
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_DUAL_CURRENCY

TO_NUMBER 関数の内容

数値文字列式、または、浮動小数点(BINARY_FLOAT、BINARY_DOUBLE)の expr を フォーマット文字列 format 書式にしたがって NUMBER 型に変換する。
書式の指定方法により、符号の位置や有無、通貨文字を含んだ文字列などを数値に変換する。
(数値の詳しい書式へ...)

TO_NUMBER 使用例

SQL> select str, fmt, TO_NUMBER(str, fmt) from to_number_sample;
 
STR                  FMT                  TO_NUMBER(STR,FMT)
-------------------- -------------------- ------------------
 1                   9                                     1
-1                   9                                    -1
    -1               9                                    -1
+1                   S9                                    1
1,234.5              9,999.9                          1234.5
12345.6              00000D0                         12345.6

エラーになる使用例 ORA-01722: 数値が無効です。

TO_NUMBER(' 1', 'S9')         ⇒ 符号指定があるのに空白
TO_NUMBER('1,234.5', '9,999') ⇒ フォーマット定義より精度が小さい
TO_NUMBER('1,234.5', '999.9') ⇒ オーバーフローする

以上のように TO_CHAR 関数 と異なり桁あふれの場合はもちろん丸め処理が発生する数値文字列の場合でもエラーになる。

各国語サポートパラメータを使用した例

SQL> select to_number('-123円','999L','NLS_CURRENCY = ''円''') yen from dual;
 
       YEN
----------
      -123


数値型の優先順位

数値型の優先順位
BINARY_DOUBLE と NUMBER を計算すると NUMBER 型の値を優先順位の高い BINARY_DOUBLE 型に変換したのちに計算される。

数値の優先順位数値のデータ型
1BINARY_DOUBLE
2BINARY_FLOAT
3NUMBER

SQL 関数 - TO_NUMBER 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター