最近のトラックバック

最近のコメント

2017年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

« マネジメント・バイ・オブジェクティブズ・アンド・セルフコントロール | トップページ | Eclipseのソフトウェア更新について »

2007年6月 6日 (水)

ORA-01722 Invalid Number

以下のSQL文を実行したところORA-01720というエラーとなってしまった。
 DELETE FROM TBL_A
 WHERE COL_StringA BETWEEN 20070101 AND 20070331

原因は、COL_StringAに全角文字の値をもったレコードが含まれていたため。
全角文字値のレコードを削除したところ正常にデータをDELETEすることができた。

マニュアルをみると、「NUMBERの値と文字の値を比較する場合、Oracleは文字データをNUMBERに変換します」とある。
暗黙にキャストされるのは、WHERE条件に指定した演算子の右側だと思い込んでいたのは誤りで、左側のカラムの値を変換して比較演算をおこなうケースもあるらしい。

詳細は以下のリンク(このページを見つけて原因がわかりました)を参照してください。

<<Annals of Oracle's Improbable Errors: ORA-01722: invalid number: >>

« マネジメント・バイ・オブジェクティブズ・アンド・セルフコントロール | トップページ | Eclipseのソフトウェア更新について »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/181317/15335087

この記事へのトラックバック一覧です: ORA-01722 Invalid Number:

« マネジメント・バイ・オブジェクティブズ・アンド・セルフコントロール | トップページ | Eclipseのソフトウェア更新について »