我正在尝试将数据从旧表插入到新表中,但是出现错误ora-01722
我尝试做:to_number(trav_no)
,因为在旧表trav_no
中是varchar,而在新表中其number(3,0)
我该怎么办?
Select trav_no,
edit_cod,
amount,
user_id
from t1;
insert into t2 (trip_id, type_id,f_amount, upd_by)
select to_number(trav_no),
to_number(edit_cod),
amount,
user_id
from t1;
答案 0 :(得分:2)
很显然,您的旧表包含无法转换为数字的值。您需要确定受影响的行,以手动修复这些值或将其排除在INSERT语句中。
识别它们的最简单方法是使用正则表达式选择它们:
SELECT *
FROM T1
WHERE NOT REGEXP_LIKE(trav_no, '^[0-9]+$')
OR NOT REGEXP_LIKE(edit_cod, '^[0-9]+$');
查询假定数字必须为正整数。如果没有,请相应地细化正则表达式。