本来正常的,经过抓包才知道原来是数字型的无意中多了乱码!

本来是3276的居然多了后面一串 3276PuAnrSeU2zliU+IV/FHlnX2Xgia1au2xX2vMWtw

http://www.cnblogs.com/raymond19840709/archive/2008/05/16/1200826.html

1. 代码里面执行了如下SQL语句:

select mdn from tablename where mdn=13800000000

tablename表里面的mdn字段是varchar2()类型字段,由于Oracle的字段类型隐式转换功能

上面的SQL语句通常是可行的,查询的时候oracle解析该条件时,会首先to_number(mdn)

再和where mdn=13812345678进行比较判断,如果能够确保mdn字段里面存放的全为数字

那么这个语句是一直不会报错的(可能存在效率问题),但偏偏有人误操作在mdn里面加入了

几个字母133aa000000,如果还是上面的语句,并且表里面没有13800000000这个用户的数据,

当查询扫描到133aa000000时to_number(mdn)报错ORA-01722 invalid number

2. 因此写SQL语句的时候最好还是规规矩矩的写:

select mdn from tablename where mdn='13800000000'

ORA-01722 invalid number很容易理解,无须多言,一般发生在显式的to_number()类型转换的参数错误时。

前几天我也遇到了一个由于直觉作怪而差点被忽略了的ORA-01722错误。

http://davidyu720.itpub.net/post/31716/291191http://davidyu720.itpub.net/post/31716/291191

一个查询 select to_number(c.name) as srvtype, value as typename from sys_code c where c.srvclass=9 --srvclass为字符型
一直工作得很好,但突然一天返回错误ORA-01722 invalid number。由于条件srvclass字段是varchar2类型,就想当然地以为是ORACLE的bug(恰巧上周刚确认了ORACLE的一个查询bug),将条件改写成c.srvclass='9'后,查询就又能运行了。

事情虽然过去了,可总觉得有点不对劲。首先ORACLE不可能出现这么简单的BUG;其次就算是BUG,返回的错误提示也不应该是 invalid number。按理说,即使ORACLE不能自动完成类型转换而要求写成 srvclass='9',那么对srvclass=9这种写法的错误提示也应该是invalid character。但由于直觉作怪,也就没有深究

正好有人质疑bug的说法,我就从头进行检查,才发现错误的根本原因是:ORACLE将where c.srvclass=9解释为where to_number(c.srvclass)=9
1)以前执行SQL时,ORACLE进行全表扫描,对每行的srvclass都转换为number型进行比较.以前表中的srvclass的取值只有字符0到9,所以没有出错;
2)后来表中加入了新数据,srvclass的取值都是字母串,ORACLE进行全表扫描时,对新行上srvclass的to_number转换当然就返回ORA-01722 invalid number了。

附:我也拜读了yangtingkun的关于ORA-01722错误的帖子http://yangtingkun.itpub.net/post/468/237197,介绍了一种错误情形:将函数调用放到SELECT列表中可以执行,如果放到WHERE条件中就会报错。

Oracle-ORA-01722 invalid number错误相关推荐

  1. oracle连接连表查询时,两表的连接字段类型不一致的时候,会导致ora 01722无效数字错误,这时候需要转换...

    类型不匹配,需要类型转换,函数:to_char()转换成字符, to_num()转换成数字 转载于:https://www.cnblogs.com/shenzhichipingguo/p/871710 ...

  2. Oracle ORA-01722: invalid number 错误分析

    今天写一条SQL语句时,反复抛出invalid number错误. 因为传入参数是纯数字类型, 所以一直以为是在要查询的表中存在非数字类型的值, 导致where中存在隐性转换TO_NUMBER无法进行 ...

  3. Invalid number format for port number(链接ORACLE时忘记加端口出现的错误)

    错误:java.sql.SQLException: Invalid number format for port number 原因:连接oracle时端口号错误: 解决: jdbc:oracle:t ...

  4. Oracle学习笔记 --- Oracle ORA错误解决方案

    今天在Debug的时候报错了如下信息: 后来综合了网上的东西,总结如下: ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-000 ...

  5. oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”

    如题,Oracle数据库里面有一批记录,现在我想根据其中一个叫:txn_date的字段来查询记录,在Hbm文件中我配置了该HQL,如下所示: select {job.*} from Newslette ...

  6. 关于Oracle执行sql语句报错[ORA-01722: invalid number]无效数字解决思路

    一.问题提示 执行Oracle的sql语句提示[ORA-01722: invalid number]无效数字错误. 二.问题分析 2.1.类型不匹配 即数据库中字段的设计类型与插入.修改的类型不统一( ...

  7. Oracle Ora 错误解决方案合集

    Oracle Ora 错误解决方案合集 参考文章: (1)Oracle Ora 错误解决方案合集 (2)https://www.cnblogs.com/ios9/p/8627643.html 备忘一下 ...

  8. Oracle出错 invalid number

    报错: invalid number 一定是因为字段关联时,字符串类型和数字类型相关联了.认真点找

  9. Oracle Study之--Oracle 11g RAC添加节点错误

    Oracle Study之--Oracle 11g RAC添加节点错误 系统环境:     操作系统:RedHat EL5     Cluster:  Oracle 11gR2 Grid     Or ...

最新文章

  1. redis学习 -- 简单动态字符串
  2. nn.embding()使用注意点
  3. 寻找优秀的程序员之实战指南-2
  4. pyecharts应用2 柱状图
  5. 驰骋工作流引擎设置消息收听
  6. 48小时单GPU训练DistilBERT!这个检索模型轻松达到SOTA
  7. Veritas Storage Foundation 5.0 HA for Windows
  8. 【转】转 Linux调优方案,sysctl.conf的设置
  9. js模版引擎handlebars.js实用教程——with-终极this应用
  10. ASP.NET使用Session的七点认识
  11. linux服务器中解压与打包jar文件
  12. 16. JavaScript Boolean(逻辑)对象
  13. java字符串长度_Java字符串长
  14. 常用的Sql命令之造数据
  15. 学习-Java循环while之求非负数之和
  16. 计算机界面显示不完整,win10系统打开软件界面发现显示不全的方法介绍
  17. 工信部等三部委:推进区块链等新一代信息技术在养老场景集成应用
  18. 企业微信微信社群运营该怎么做?
  19. 水处理过滤器:多介质过滤器结构组成及技术参数
  20. 没想到吧?快手竟然给厕所上安装了计时器,或许职场从此再无「带薪拉屎」...

热门文章

  1. php mysql安装位置_安装php时,--with-mysql指定的是哪个路径呢?
  2. 删除空值_空白单元格行,如何快速批量删除?简单方法,效率飞升
  3. java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient
  4. php校友录毕业论文,基于WEB的同学校友录的设计(PHP,MySQL)(附答辩记录)
  5. oracle oud什么意思,oracle 在linux上,如何使用oud工具恢復truncate 表中的记录? 超急!请帮帮忙...
  6. python有序队列_Python 队列
  7. CV算法复现(分类算法1/6):LeNet5(1998年 LeCun)
  8. Tensorflow中的mnist例子
  9. 深度学习--TensorFlow(项目)Keras手写数字识别
  10. PCL特征点与配准(1)