Oracle-ORA-01722 invalid number错误
本来正常的,经过抓包才知道原来是数字型的无意中多了乱码!
本来是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条件中就会报错。
相关文章:

只读方式VS地址
数组-136. 只出现一次的数字题目描述题目样例Java方法:位运算算法思路代码复杂度题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1: 输入: […

Nmap (网络映射器)好东西啊
2019独角兽企业重金招聘Python工程师标准>>> Nmap (网络映射器)是由 Gordon Lyon设计,用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图,Nmap的发送特制的数据包到目标主机,然后对返…

【教你赚钱】独立开发者荒野求生之道
本文包括以下内容: 独立开发者面临的现状如何利用一切细节,获取流量注:本文将不涉及代码层面的东西,但是将有可能帮助你,把你写完的代码的价值,放大十倍百倍千倍。 我做了四年独立开发,从一开始…

form表单的reset
form表单的reset重置表单(把表单的所有输入元素重置为它们的默认值。):1.使用reset按钮,条件reset按钮必须在form表单内部。2. <input id"Button1" type"button" value"button" οnclick"form1.reset();" />可以不在…

导航属性(外键)
第一种方法:(不灵活)1.一个学生类型只能保存一个年级对象//一个年级对象能保存多个学生对象//实际开发时单向比较多5.在年级对象类中根据年级编号来查询年级对象//写在if前面代表察回来值即使是空也没问题 因为null6.创建学生编号的时候new 一个 年级对象并且调用年级对象的id将…

23.week4
调通了 剩下的就是核心的部分 转载于:https://www.cnblogs.com/PoeticalJustice/p/9494823.html

“重置”不是“清空”
编程这么多年,一直以为“重置”按钮就是“清空”。 其实,重置是让页面回到初始状态,关键就是如果某个文本框中有值,那么点重置是不能清空的。可以自己做个测试,在一开始就有值的文本框后添加信息,点重置只会…

洒出VS的受调查
数组-136. 只出现一次的数字题目描述题目样例Java方法:位运算算法思路代码复杂度题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1: 输入: […

SQL 常用方法
SQL 常用方法 EXCEPT :返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。 INTERSECT :返回 两个结果集的交集(即两个查询都返回的所有非重复值)。 UNION :返回两个结果集的并…

【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门
1.1 环境 Visual Studio GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(FetchMeger) 获取(Fetch):从远…

php字符串比较函数
比较两个字符串是否相等,最常见的方法就是使用“”来判断,至于它和“”的区别,简单来说就是前者强调“identical”类型也要求一样;后者要求“equal”,值相同就可以了,参考【1】。或者使用strcmp来判断&…

Debugging Tools for Windows__from WDK7
1、 主要要用到两个工具: (1)、WinDBG 这个主要用于 非IDE下 调试程序/查看信息等 (2)、cdb.exe 这个主要是用在 Qt5.3.2 for VS10 的单步调试器 2、 WDK7 的文件,名为 GRMWDK_EN_7600_1.ISO,该文件我备份于“百度云 CodeSkill --> 全部文…

数据结构:二分查找 java
为什么80%的码农都做不了架构师?>>> 二分查找的前提是有序存储,利用顺序存储和元素排序 /*** 二分查找,查找成功,返回下标记* param values* param begin* param end* param key* param <T>* return*/ public s…

PHP一些十分严重的缺陷
1. 对递归的不良支持 递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序(quicksort)。不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对…

Thinkphp----------为什么Thinkphp会默认进入Index控制器的index方法
1、最近遇到两个刚学PHP的童鞋,都问到了同一个问题,就是他们没有做什么配置,为什么访问入口文件index.php的时候会自动跳转到IndexController里面的index方法。他们想知道具体怎么回事,下面就简单讲解一下,其实并不难只…

Confluence 6 Home 和其他重要的目录
2019独角兽企业重金招聘Python工程师标准>>> Confluence 安装目录 Confluence 安装的目录(Confluence Installation directory)定义的是 Confluence 是在那里进行安装的。这个目录有时候也被称为 Confluence 安装目录(Confluence …

Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
关于mod_xsendfile https://tn123.org/mod_xsendfile/Lighttpd中的X-sendfile RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能 使用X-sendfile方式,服务器端应用程序不需要读取下载文件了,只需要设置response的header信息就足够了,…

[译] ASP.NET 生命周期 – ASP.NET 上下文对象(六)
使用 HttpApplication 对象 ASP.NET 框架中的许多类都提供了许多很方便的属性可以直接映射到 HttpContext 类中定义的属性。这种交叠有一个很好的例子就是 HttpApplication,它就是全局应用类的基类,在下表中,你可以看到 HttpApplication 类中…

变得非常不vb
数组-136. 只出现一次的数字题目描述题目样例Java方法:位运算算法思路代码复杂度题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1: 输入: […

分析PHP中单双引号的误区和双引号小隐患
2019独角兽企业重金招聘Python工程师标准>>> 1、一般情况下两者是通用的.但如果双引号内写的是变量就会执行解析操作,而单引号则不解析,这个怎么说?还是举个例子吧。 这下看明白了吧! 2、执行效率不一样,单引号的执行速…

javascript(js)的小数点乘法除法问题
一、用js计算12.32 * 7 结果是多少?答案:86.24000000000001为什么会出现这种问题?怎么解决?js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理。以上的计算可以改为:…

sDVD消防大队
数组-136. 只出现一次的数字题目描述题目样例Java方法:位运算算法思路代码复杂度题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1: 输入: […

WPF的二维绘图(二)——几何图形Geometry
在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle。但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawGeometry函数,它可以绘制更多复杂的几何图形&…

定期删除各子文件下数据
最近遇到一个客户有这样一个需求,需要在每日自动删除各用户文件夹下的数据而不删除根文件夹和每个用户父文件夹 Register-ScheduledJob -Name Remove-InternetDataFiles -ScriptBlock {$root "E:\Internet-Data"$dirs Get-ChildItem $root -Directoryfo…

PHP使用BC Math 函数处理浮点运算问题
BC Math 函数 http://cn.php.net/manual/zh/ref.bc.php做小数的相加减问题是,出现了浮点运算不准的情况,看来都说解释型语言对于浮点运算都会有问题的说法是真的。首先看一段代码: <?php$a 0.1;$b 0.7;var_dump(($a $b) 0.8); 打印出来的值居然为…

【重建】从FJOI2016一试谈起
2016.2.21 我是湖建的sb蒟蒻OIer FOIWCFJOI2016 体验性的旅途,新生 其实是刚刚找回密码闲的没事干 前排膜FZSZ各位学长 ORZ 闫神 ORZ 吴大爷 ORZ 汪巨 ORZ 邵司机 ORZ 方老师ORZ dxy zkp zzy 湖建省选一试被虐。不知道明年这个时候会有什么改变 总而言之ÿ…

是否正常正常是
数组-136. 只出现一次的数字题目描述题目样例Java方法:位运算算法思路代码复杂度题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 题目样例 示例1: 输入: […

pkg mysql 在macOS 上的管理
为什么80%的码农都做不了架构师?>>> 使用pkg安装后,在设置中启停,通过ps -ef|grep mysql查看进程的命令行即可看到各配置位置。 转载于:https://my.oschina.net/fox99/blog/1931674

PHP autoload 函数
(1) autoload机制概述 在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个…

sql按条件进行批量查询或update的关键字in
2019独角兽企业重金招聘Python工程师标准>>> SELECT t1.field1,t1.field2,t1.field3 from t1 where t1.pid in (select fid from t2 where t2.ch%123456%) 再看这段代码, select t.* from mefinance.me_customer_info t where t.id in (3285,4241,4243,4…