テーブルemp_details
があります。
列emp_salary
はタイプvarchar2
であり、特定の行はnullです。
emp_salary
100,34
null
20,2
30,3
null
列のタイプが数値である結果が必要です。
emp_salary
100.34
null
20.2
30.3
null
コードでの私の試みは:
select emp_salary
from emp_details
where emp_salary = to_number(emp_salary ,'9999D99','nls_numeric_characters=,.');
エラー:
ORA-01722:番号が無効です
01722。 00000-"無効な番号"
*原因:指定された番号が無効でした。
*アクション:有効な数値を指定してください。
どうすれば修正できますか?
値を比較するつもりはありません。 varchar
をnumber
に変更したいだけです。 TO_NUMBER
を使用して、大きな関数の小さな部分で使用します。
あなたはほとんどそこにいます。フィルターではなく選択した値の変換を実行しているように聞こえるので、NULLに対応する必要があります。
SELECT TO_NUMBER(NVL(emp_salary,'0'),'9999D99','nls_numeric_characters=,.')
FROM emp_details