Oracle联接子句,其中varchar2(4字节)引起问题

时间:2018-07-18 20:30:41

标签: oracle join

标题很难选择我的措辞。

我有2个表要通过lg_code连接在一起。两列都是VARCHAR2(4字节)。我遇到了一个问题,其中table1 lg_code = 0003和table2 lg_code =3。三个0导致联接出现问题,并且未返回所需的所有数据。我将如何编写join子句来解决此问题?

代码:

select * from table1 t1 JOIN table2 t2 ON t1.LG_CODE = t2.LG_CODE

2 个答案:

答案 0 :(得分:1)

我建议先将列lg_code的值转换为数字,然后再进行联接:

SELECT * FROM table1 t1 
JOIN table2 t2 ON to_number(t1.LG_CODE) = to_number(t2.LG_CODE)

答案 1 :(得分:0)

您也可以在它们上使用ltrim():

SELECT * FROM table1 t1 
JOIN table2 t2 ON LTRIM(t1.LG_CODE, '0') = LTRIM(t2.LG_CODE, '0');

但是在较新版本的oracle SQL * PLUS中,它会自动修剪。