ORACLE機能 エラー

[ORAエラー] ORA-01722: 数値が無効です。

投稿日:2017年4月9日 更新日:

以下のように表示されます。

(日本語)
ORA-01722: 数値が無効です。
(英語)
ORA-01722: invalid number

発生パターン

このエラーは以下のような場合に発生します。

  • 数値が想定される場面で数値以外が設定されていた
  • NUMBER型に文字列をセットしようとした
エラー例1
SQL> select to_number('ABC') from dual; select to_number('ABC') from dual * 行1でエラーが発生しました。: ORA-01722: 数値が無効です。

文字列 "ABC" を数値型に変換しようとしてエラーとなっています。

エラー例2
SQL> SELECT NVL(1, 'a') FROM dual; SELECT NVL(1, 'a') FROM dual * 行1でエラーが発生しました。: ORA-01722: 数値が無効です。

NVL対象の値と変換値の型が異なるためエラーとなっています。

エラー例3
SQL> select * from m_test where kbn = 1; select * from m_test where kbn = 1; * 行1でエラーが発生しました。: ORA-01722: 数値が無効です。

kbnの型が文字型で、数値以外の値がセットされている前提です。

対処法

  • TO_NUMBERしている値が文字列でないか確認する
  • 数値型のカラムに文字列をINSERT、UPDATEしていないか確認する
  • WHERE句で、文字型のカラムに対して数値を条件指定していないか確認する

スポンサーリンク

スポンサーリンク

-ORACLE機能, エラー

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ORACLE

[ORACLE] 列にNOT NULL制約を追加/削除する

テーブルの列にNOT NULL制約を追加/削除するには、ALTER TABLE~MODIFY句を使用します。 構文 (N ...
ORACLE

[ORACLE] 引数名を指定してファンクション、プロシージャを呼び出す

ファンクションやプロシージャの引数の指定方法には、位置表記法と名前表記法の2種類があります。 以下のようなプロシージャを ...
ORACLE

[ORACLE] 再コンパイル用のSQL文を生成する

再コンパイル用のSQL文を生成するSQLです。 サンプル 例)再コンパイル用のSQL文を生成する [crayon-5d6 ...
ORACLE

[ORACLE] 値をマスキングするSQL

値を隠すためにマスキングするUPDATE文のサンプルです。 サンプル 例)m_userテーブルのaddress列の1文字 ...
ORACLE

[SQL*Plus] プロシージャやファンクションの引数を確認する

プロシージャやファンクションの引数を確認するには、descを使用します。 サンプル 例)プロシージャ「p_test」の引 ...

スポンサーリンク