所以如果我在两个不同的表中有以下字段
TABLE 1 | TABLE 2
Itm_ID (VARCHAR2) | Itm_ID (NUMBER)
99-11-22 | 991122
12-33-44 | 123344
23-44-11 | 234411
...我需要将它们相互匹配以比较数据,如何更改表1字段以更新表中没有数字中的破折号然后匹配表2字段?
我知道to_number()所以我认为我最大的问题是如何在没有Itm_ID中的破折号的情况下更新表格。
答案 0 :(得分:1)
比较
WHERE TO_NUMBER(REPLACE(TABLE1.ITM_ID,'-',''))=TABLE2.ITM_ID
答案 1 :(得分:0)
在这里,您可以使用CASE来检查值是否匹配!
Select TABLE1.ID,
TABLE1.Itm_ID ,
TABLE2.Itm_ID ,
CASE
WHEN TO_NUMBER (REPLACE(TABLE1.Itm_ID,'-','')) = TABLE2.Itm_ID
THEN 'MATCH'
ELSE 'NO MATCH'
END CASE
FROM
TABLE1 ,
TABLE2
where TABLE1 .id = TABLE2.id;
输出:
如果您想永久更新表1,请使用以下内容:
update TABLE1
set ITM_ID = TO_NUMBER (REPLACE(TABLE1.Itm_ID,'-',''));
-- It will remove '-' from all rows
COMMIT;