如何匹配具有不同格式和数据类型的字段?

时间:2015-07-06 16:05:03

标签: sql oracle replace type-conversion data-comparison

所以如果我在两个不同的表中有以下字段

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中的破折号的情况下更新表格。

2 个答案:

答案 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;
  

输出:

enter image description here

如果您想永久更新表1,请使用以下内容:

  update TABLE1
    set ITM_ID = TO_NUMBER (REPLACE(TABLE1.Itm_ID,'-','')); 
   -- It will remove '-' from all rows 

    COMMIT;