参考我的其他帖子,我决定在我的数据库中存储前导零的数字。 我正在从集合中选择导入的数据并将其插入到数据库表中。问题是,如果我尝试在集合中的列上使用函数to_char(c001,'009'),则会显示“ORA-01722:无效数字”。
我不明白这一点,因为数据源是varchar2,目的地也是varchar2。
有人解决了这个问题吗?
答案 0 :(得分:0)
Oracle的to_char函数接受一个数字作为它的第一个参数。因此,您提供的值将转换为数字。如果coo1不包含有效数字,您将收到该错误消息。
你的一个号码不是数字。您可以使用plsql代码找出包含无效数字的记录:
declare
l_number number;
cursor c is select ID,column_name from table;
begin
for r in c loop
begin
l_number := to_number(r.column_name);
exception
when others then dbms_output.put_line(r.id||' '||r.column_name);
end;
end loop;
end;