zoukankan      html  css  js  c++  java
  • Oracle报错ORA-01722: 无效数字,排查分析

    主要原因是:
    1、对于两个类型不匹配(一个数字类型,一个非数字类型,同下)的值进行赋值操作;
    2、两个类型不匹配的值进行比较操作(例如,“=”);
    3、to_number函数中的值,非数字的,比如,to_number('a')肯定是不行的,to_number('12306')则是正常的。
    要避免这些问题,要做到在写sql语句时就好认真处理好不同类型的问题。
    比如如果要比较的话,同时都用to_number强制转换(to_number(字段a) = to_number(字段b)),或者同时转换为字符串类型(字段a||'' = 字段b||'',都连接一个空字符串使之变成字符串类型)。
    在语句中使用to_number函数时,要保证值一定是数字格式,或者写好异常处理。
    
    当sql复杂的时候,难免有错误,当我们碰到这个错误提示时,就从所有用到的数字类型的字段开始检查,逐一排查,从而解决问题。 参考:http://blog.csdn.net/yysyangyangyangshan/article/details/51762746


    DECODE中既有数字又有字符 SELECT DECODE('XXX','A',1,'-') FROM DUAL;
    ROUND使用了字符 SELECT ROUND('-',2) FROM DUAL;
    TO_NUMBER使用了非数字字符 SELECT TO_NUMBER('111A') FROM DUAL;
  • 相关阅读:
    vue项目开发流程
    板子-补充
    Python 类对象的JSON序列化与反序列化
    Maven中央仓库地址配置大全
    Docker 中搭建 MySQL 主从复制
    mac 上必备的工具
    iTerm 中 oh my zsh 主题去掉 git 目录多级显示
    iTerm2 主题设置
    MySQL查看表占用空间大小
    MySQL 语句报错:1093
  • 原文地址:https://www.cnblogs.com/zhenghua0501/p/13665633.html
Copyright © 2011-2022 走看看