因为everynote 官方导致需要重新修改密码才能登录,并且莫名奇妙的从系统里面删除了后就懒得安装,只好在博客里面记录下平常遇到的问题。
提示代码是 ORA-01722 无效数字 其实根据提示代码的错误可以很好的理解,就是 无效数字,不管是Java里面还是oracle里面,String 转 int或者varchar 转 number,同样反过来也一样。
我遇到的问题是子查询嵌套。SQL如下:sql我把多余的都删除了,只留下部分做说明。子查询分开执行都没有问题,组合起来执行就报错
SELECT *
FROM JBPM4_TASK TA
LEFT JOIN JBPM4_PARTICIPATION JP
ON TA.DBID_ = JP.TASK_
WHERE JP.USERID_ IN
(SELECT TU.ID
FROM TB_USER TU
WHERE TP.ID = TUP.POSTID
AND TU.ID = TUP.USERID
AND TOR.ID = TU.DEPARTMENT
AND TP.NAME LIKE '%%'
AND TOR.PATH LIKE '%%')
AND TA.STATE_ = 'OPEN'
ORDER BY ID
问题的原因是: JP.USERID_ 是varchar类型的,TU.ID是number类型的,这样嵌套出来就报 无效数字 错误,解决办法,使用TO_CHAR转换一下就可以
SELECT TO_CHAR(TU.ID)
问题解决