ORA-01722:无效数字
本地工程调用程序包会自动加上单引号,测试环境部署到linux环境下,不会自动加上单引号,生产环境也是部署到Llnux上的,也不会自动带上单引号,所以如果条件字段是字符类型,最好都加上单引号。
转载内容:
最近刚出现的一种情况,本来在开发环境中sql 都没有问题,结果在测试环境中却报出:ORA-01722: 无效数字 异常。同样的sql 只是环境不同,却一个正常一个报错。也是一顿纠结。后来查出是因为Where 条件后 “列名=数字” 造成的。 表中有一状态列 :state char(1),因为最开始时里面的值都是数字类型 所以sql 中直接写 state = 1. 这样查询没报错是因为 oracle 做了隐式转换。也就是T0_NUMBER(STATE)=1 这时当数据库中出现了如 a b c d 这些字符时,TO_NUMBER 就会触发ORA-01722 错误了。所以以后要做到在写sql语句时就得认真处理好不同类型的问题 用state = ‘1’
载请附上博文链接!
转载地址:https://blog.csdn.net/leaf_0303/article/details/80365478