我在包中有一个查询抛出错误
ORA-01722: 无效号码。
我尝试了很多方法但没有运气。
select h.column
from table1 h,table2 c
where c.created_date='17-MAY-17'
and nvl(c.acct_nmbr,0)=nvl(to_number(h.v_acct_num),0)
-
c.acct_nmbr
is of NUMBER(19,0)
-
h.v_acct_num
is of varchar2(4000 byte)
请建议我解决方案
如果您正在使用Oracle 12.2 或更高版本那么你可以使用TO_NUMBER
with ON CONVERSION ERROR
条款如下:
SELECT
H.COLUMN
FROM
TABLE1 H
JOIN TABLE2 C
ON NVL(C.ACCT_NMBR, 0) = NVL(TO_NUMBER(H.V_ACCT_NUM DEFAULT -999 ON CONVERSION ERROR), 0)
-- use any number which is impossible in your column
-- so that it do not match any random records.
WHERE
C.CREATED_DATE = DATE '2017-05-17';
Note:
- 使用标准ANSI joins
- Use
DATE
无论您要将字符串转换为日期还是文字TO_DATE
功能
Cheers!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)