SQL TO_NUMBER 関数

TO_NUMBERとは、文字列を数値に変換するOracle SQL関数です。正負の符号や小数点、桁区切りのカンマ、通貨記号などが含まれた文字列も数値に変換することができます。

TO_NUMBER
DBMS TO_NUMBER
MySQL
Oracle
PostgreSQL
Snowflake
SQL Server

TO_NUMBERの構文

文字列を数値に変換する。

TO_NUMBER(expr)

フォーマットを指定して、文字列を数値に変換する。

TO_NUMBER(expr, format)

NLSパラメータを指定して、文字列を数値に変換する。

TO_NUMBER(expr, format, nls_param)

TO_NUMBERの引数

TO_NUMBER 関数には、以下に示す引数を指定できる。

expr

数値に変換する文字列を指定する。文字列の中に小数点や正負の符号が含まれていても良い。

文字列の中に桁区切りのカンマや通貨記号などが含まれていると、「ORA-01722: 数値が無効です。」のエラーが発生する。 桁区切りのカンマや通貨記号などが含まれている文字列を数値に変換する場合は、 formatで文字列の書式モデルを指定する。

expr が NULL と評価されると、TO_NUMBER 関数は戻り値として NULLが返す。

TO_NUMBER(NULL)

expr に空文字を渡すと、空文字を返す。Oracle Database では NULL と空文字は等価である。

TO_NUMBER('')
format

文字列のフォーマットを指定する。フォーマットのうち、次表に示す文字は特別な意味を持つ。

文字 説明
0 1桁の数字で先行ゼロ
1 1桁の数字
D 小数点の記号(NLS_NUMERIC_CHARACTERパラメータによって決まる)を表す。
日本やアメリカなどではピリオドとなり、ドイツやフランスではカンマとなる。
G 桁区切りの記号(NLS_NUMERIC_CHARACTERパラメータによって決まる)を表す。
日本やアメリカなどではカンマとなり、ドイツやフランスではピリオドとなる。
S 正の符号又は負の符号を表す。
nls_param

各言語サポートパラメータを指定する。

TO_NUMBERの使用例

文字列を数値に変換するSQLの例を示す。

SQL> select TO_NUMBER('12') from DUAL;

TO_NUMBER('12')
---------------
           12

SQL> select TO_NUMBER('-34') from DUAL;

TO_NUMBER('-34')
----------------
           -34

SQL>

フォーマットを指定して文字列を数値に変換するSQLの例を示す。

SQL> select TO_NUMBER('123,456') from DUAL;
SELECT TO_NUMBER('123,456') from DUAL;
               *
行1でエラーが発生しました。 :
ORA-01722: 数値が無効です。

SQL> select TO_NUMBER('123,456', '999G999') from DUAL;

TO_NUMBER('123,456','999G999')
------------------------------
                      123456

SQL> select TO_NUMBER('123,456', '999,999') from DUAL;

TO_NUMBER('123,456','999,999')
------------------------------
                      123456

SQL>

小数点

小数点を含む文字列は、書式を指定しなくても数値に変換できる。

SQL> SELECT TO_NUMBER('56.78') FROM DUAL;

TO_NUMBER('56.78')
------------------
           56.78

SQL>

数値を文字列に変換する

TO_NUMBERは文字列を数値に変換する関数であるが、逆に数値を文字列に変換するにはTO_CHAR関数を使う。

日付

日付を文字列に変換するには、TO_CHAR関数を使う。