INNER JOIN上的不同列类型

时间:2011-09-30 18:19:51

标签: oracle casting case

所以我有两张表,我将用INNER JOIN引用。一方面,列类型为Number(3, 0),另一方面为Varchar(150)。看到我不能更改数据类型,我必须将其投射到连接上。但是,在表格中,列是varchar,字符串总是有3位数,如'001','010'或甚至'100'等等......

我的解决方案是在连接上使用Case,如下所示:

INNER JOIN TAB1 ON TAB1.VARCHAR_COL = Cast(Case...), AS Varchar(150)

Case必须将数字格式化为带有树数字前缀的字符串,如上所述。 如果数据像'1'那样,Case必须格式化为'001',如果变为'10',它将变为'010'......

帮助我Case

编辑:varchar列的某些值不是数字,因此强制转换它会显示错误。

1 个答案:

答案 0 :(得分:3)

似乎根本不需要CASE

TAB1.VARCHAR_COL = TO_CHAR( TAB2.NUMBER_COL, '000' )