如何修改MERGE语句实现插入tab2时转换tab1的字段数据类型
修正后的MERGE语句
你原来的语句存在字段名、别名错误,补充类型转换逻辑后最终语句如下:
MERGE INTO tab2 tt USING (SELECT e_id, e_date, t_ref_num FROM tab1) t1 ON ( tt.e_id = TO_NUMBER(t1.e_id) ) WHEN MATCHED THEN UPDATE SET tt.e_date = TO_DATE(t1.e_date, 'dd-mm-yyyy'), tt.t_ref_num = TO_NUMBER(t1.t_ref_num) WHEN NOT MATCHED THEN INSERT (e_id, e_date, t_ref_num) VALUES (TO_NUMBER(t1.e_id), TO_DATE(t1.e_date, 'dd-mm-yyyy'), TO_NUMBER(t1.t_ref_num));
改动说明
- 修正了USING子查询中写错的字段名
_t_ref_num为正确的t_ref_num - 修正了ON关联条件中错误的别名
t2为目标表的正确别名tt,同时对t1的e_id做了数值转换保证关联时类型匹配 - 所有涉及从tab1取的字段都按tab2的类型做了转换:
- 字符串类型的e_id、t_ref_num通过
TO_NUMBER()转为数值类型 - 字符串格式的日期通过
TO_DATE()配合格式模板dd-mm-yyyy转为DATE类型,和你示例中插入的01-01-2000格式完全匹配
- 字符串类型的e_id、t_ref_num通过
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

