使用Oracle时,在测试环境中却报出:ORA-01722: 无效数字 异常。
检查了一遍sql语句也没发现什么问题。后来查出是因为Where 条件后 “列名=数字” 造成的。
表中有一列 :district_code 字段类型是 VARCHAR2(20)
,因为最开始时里面的值都是数字类型 所以sql 中直接写 district_code =330400
. 这样查询没报错是因为 oracle 做了隐式转换。也就是T0_NUMBER(district_code )=330400 ,
这时当数据库中出现了如 a b c d 这些字符时,TO_NUMBER 就会触发ORA-01722 错误了。所以以后要做到在写sql语句时就得认真处理好不同类型的问题 用单引号把值给套上district_code ='330400'