qty
だと思います varchar2
として定義されています my_table
で --それ以外の場合、to_number
を呼び出しても目的はありません。 。その仮定が正しければ、テーブルにqty
がある他の行があることに賭けます。 数値以外のデータが含まれています。
SQLはセットベースの言語であるため、Oracle(またはその他のデータベース)は、適切と思われる順序で物事を完全に自由に評価できます。つまり、Oracleはto_number(qty)
を完全に自由に評価できます。 id=12345
を適用する前の式 述語。 Oracleがqty
の行に遭遇した場合 値を数値に変換できないため、エラーがスローされます。
id=12345
の特定の行に数値以外のデータが含まれている可能性もあります。 それはたまたま表示されていません(たとえば、制御文字)。クエリを実行することで確認できます
SELECT dump(qty, 1016)
FROM my_table
WHERE id = 12345
(16進数ではなく10進数が必要な場合は、dump
の2番目のパラメーターとして1010を使用します。 )そして、データに予期しないものがないかどうかを確認します。