ORA-01722: 无效数字 -那些年踩过的坑

最近刚出现的一种情况,本来在开发环境中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’

你可能感兴趣的:(oracle)