- TOP
- 技術情報
- Oracle DB Tips
- ORA-01481: 数値書式モデルが無効です
KNOWLEDGE
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
Oracle DB Tips
TO_CHAR(数値)関数 または TO_NUMBER関数などで任意の書式モデルを指定して変換を行った際に、書式モデルに誤った数値書式を指定しているため発生するエラーです。
SQL> SELECT TO_NUMBER('-200','-999') FROM dual; SELECT TO_NUMBER('-200','-999') FROM dual * 行1でエラーが発生しました。: ORA-01481: 数値書式モデルが無効です
ORA-01481は一般的に以下の要因で発生します。
上記のエラー出力例の場合、TO_NUMBER 関数の第二引数 ‘-999’ は正しい数値書式の指定ではないため、ORA-01481が発生しています。適切な数値書式を指定することで、意図した書式モデルへの変換を行います。
上記例の場合、数値3桁かつ先頭に符号を付与する書式は ‘S999’ であるので、正しくは以下のSQL文になります。
SQL> SELECT TO_NUMBER('-200','S999') FROM dual; TO_NUMBER('-200','S999') ------------------------ -200
数値書式モデルを指定することができる変換関数としては、TO_CHAR, TO_NUMBER 以外に、TO_BINARY_DOUBLE, TO_BINARY_FLOAT があります。
数値書式には様々な書式が豊富に用意されています。例として以下のような書式に変換することができます。
数値書式の種類と指定方法については、使用している Database バージョンの『SQL言語リファレンス』マニュアル内の「書式モデル」に詳細な記載がありますのでそちらを参照ください。
(*1) TO_CHAR 関数にて数値から文字列に変換する場合
ORA-1481 ORA-01481 数値書式モデル 無効 TO_CHAR TO_NUMBER 変換 フォーマット