ORACLE-023:使人烦恼的 ora-01722 无效数字

曾经一段时间内写sql语句时,总是莫名其妙的报ora-01722。
对于这个错误提示,尤为是对于一个复杂的sql语句,非常郁闷,由于不少时候都不知所然。
经过每次碰到的总结,其实也不是那么难以解决的,主要缘由是:
一、对于两个类型不匹配(一个数字类型,一个非数字类型,同下)的值进行赋值操做;
二、两个类型不匹配的值进行比较操做(例如,“=”);
三、to_number函数中的值,非数字的,好比,to_number('a')确定是不行的,to_number('12306')则是正常的。sql

要避免这些问题,要作到在写sql语句时就好认真处理好不一样类型的问题。
好比若是要比较的话,同时都用to_number强制转换(to_number(字段a) = to_number(字段b)),
或者同时转换为字符串类型(字段a||'' = 字段b||'',都链接一个空字符串使之变成字符串类型)。ide

在语句中使用to_number函数时,要保证值必定是数字格式,或者写好异常处理。函数

当咱们碰到这个错误提示时,就从全部用到的数字类型的字段开始检查,逐一排查,从而解决问题。spa

相关文章
相关标签/搜索