Sql 比较带前导零的两个字段

Sql 比较带前导零的两个字段,sql,oracle,Sql,Oracle,我有表A和表B,它们共享多个字段,并且具有相同的数据类型/长度,我正在尝试向表B获取更多信息,为此,我需要对case_number进行匹配 问题是表A中的事例编号的长度为10,小于10的任何内容前面都有零(即84534-->00000 84534)。表B没有(84534=84534),因此当我尝试匹配事例编号时,我没有得到任何结果。这两个字段都是varchar2,这是Oracle,我无法修改表A 我尝试使用LPAD,但似乎没有帮助。我需要一个函数在select语句中工作。一种方法是将其转换为数字

我有表A和表B,它们共享多个字段,并且具有相同的数据类型/长度,我正在尝试向表B获取更多信息,为此,我需要对case_number进行匹配

问题是表A中的事例编号的长度为10,小于10的任何内容前面都有零(即84534-->00000 84534)。表B没有(84534=84534),因此当我尝试匹配事例编号时,我没有得到任何结果。这两个字段都是varchar2,这是Oracle,我无法修改表A


我尝试使用LPAD,但似乎没有帮助。我需要一个函数在select语句中工作。

一种方法是将其转换为数字:

to_number(x) = to_number(y)

最简单的解决方案似乎是将第二个表中的字符串左键填充为零:

...
where a.case_number = lpad(b.case_number, 10, '0')
...
或者,您可以保持
b.case\u编号
不变,并从
a.case\u编号
左修剪
0'
,但这只有在您能够保证
b.case\u编号
从不具有前导零(尤其是
b.case\u编号
不能为零)的情况下才有效

...
where ltrim(a.case_number, '0') = b.case_number
...