在执行sql时 遇到了一个转换类型的错误 ORA-01722: invalid number
... LEFT JOIN A ON B.BUSINESSID = A.ID ...
原因是在进行隐式数据类型转换时,BUSINESSID 字段是 VARCHAR2类型,其中有些业务数据包含了非数字字符,导致转换报错
可以使用下面的sql查哪些数据的字段包含了非数字
select * from B where not regexp_like (BUSINESSID, '^(+|[0-9]+)$')
解决过程中查找的一些文章
ORACLE隐式类型转换 - 潇湘隐者 - 博客园 (cnblogs.com)
oracle隐式转换的规则_oracle隐式转换规则-CSDN博客
最终的解决办法 TO_CHAR(A.ID) 然后建立索引
但是如果把条件换了位置,就不会报错了,
ON A.ID = B.BUSINESSID
有待深入研究....