我试图通过SQL * loader将数值插入Oracle DB,但我仍然得到错误:
记录1:已拒绝 - 表my_table,列column_1出错。 ORA-01722:无效数字
插入值的SQL *加载器的行格式为
column_1 INTEGER "TO_NUMBER(REPLACE(:column_1, ' ', ''), '99999999D99')"
虽然我需要插入的值是:30 000 000,00
如果我删除了掩码('99999999D99'
),它会插入一个数字但是有问题。插入的值为:807415859
有人可以帮我理解我做错了什么吗?
答案 0 :(得分:0)
经过几次测试后,答案是:
column_1 "to_number(replace(replace(:column_1, ',', '.'), ' ', ','), '99999999.99')"
答案 1 :(得分:0)
您可能会更容易找到TRANSLATE()
功能。一步将逗号转换为句点和空格为NULL。像这样测试:
SQL> select translate('30 000 000,00', ', ', '.') fixed
from dual;
FIXED
-----------
30000000.00
SQL>
然后完整答案:
column_1 "to_number(translate(:column_1, ', ', '.'), '99999999.99')"
请务必添加空间需要持久的评论!