私はVARCHAR2
、基数と小数部分として書かれた数字の付いたを持ってい.02
ます。使用する場合
TO_NUMBER(NUMBER_COLUMN)
エラーが発生します
ORA-01722:番号が無効です
フォーマットが認識されないことを示します。組み込みの回避策はありますか(必要なゼロを提供できますか、DECODE
または提供できますか?SUBSTR
私はVARCHAR2
、基数と小数部分として書かれた数字の付いたを持ってい.02
ます。使用する場合
TO_NUMBER(NUMBER_COLUMN)
エラーが発生します
ORA-01722:番号が無効です
フォーマットが認識されないことを示します。組み込みの回避策はありますか(必要なゼロを提供できますか、DECODE
または提供できますか?SUBSTR
このエラーが発生しているのは、varchar列に基数+小数部分が存在するためではなく、varchar列に数値以外の文字が含まれているためです。これはto_numberの実行時に数値に変換できません。
このSQLフィドルを介してこれを示すことができます
また、NLSパラメータがOracleが小数点記号として期待するものと異なる可能性があるため、このエラーがスローされます。
パラメータを変更することにより、Oracleが10進演算子として期待する文字を変更NLS_NUMERIC_CHARACTERS
できます。
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ".,"
.
Oracleに小数点と,
千単位の区切り文字としてを期待するように指示します
試すOracleインスタンスはありませんが、TO_NUMBERのフルバージョンを使用すると役立つ場合があります:TO_NUMBER(column、 '9999999999D99')またはTO_NUMBER(column、'B9999999999D99')
詳細はこちらhttp://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm
また、別の小数点を使用する必要がある場合は、TO_NUMBERに3番目のパラメーターを指定できます。たとえば、TO_NUMBER('$ 94 567,00'、'L999G999D00'、NLS_NUMERIC_CHARACTERS'、')。