Oracle ORA-01722: invalid number 错误分析
今天写一条SQL语句时,反复抛出invalid number错误。
因为传入参数是纯数字类型,
所以一直以为是在要查询的表中存在非数字类型的值,
导致where中存在隐性转换TO_NUMBER无法进行转换,而抛出的该错误。
但在我将参数全部与自定义字符串拼接转成字符串类型后进行查询,也还是会报出这个错误
对参数进行处理后的语句如下:
SELECThp.customer_model AS customerModel,TO_CHAR(c.prduct_id) AS prductId
FROMhw_barcode cLEFT JOIN hw_product hp ON hp.id = c.prduct_id
WHERE1 = 1 AND concat(123456,'x') LIKE c.begin_code || '%'AND 'x' || 123456 LIKE '%' || c.end_code AND ROWNUM = 1
然后就只能对SQL进行逐行分析了:
explain plan for
SELECThp.customer_model AS customerModel,TO_CHAR(c.prduct_id) AS prductId
FROMhw_barcode cLEFT JOIN hw_product hp ON hp.id = c.prduct_id
WHERE1 = 1 AND concat(123456,'x') LIKE c.begin_code || '%'AND 'x' || 123456 LIKE '%' || c.end_code AND ROWNUM = 1select * from TABLE(dbms_xplan.display);
在结果中可以看到,在表与表之间的left join 关联处,右表的关联字段会自动转成左表的关联字段的数据类型:
了解了问题之后,查看对应的表的字段类型和表内的数据,就可以发现右表中的’prduct_id’字段实际上是varchar类型的,并且其中数据存有非数字类型的值,所以在这里进行转换是肯定会报错的。将进行连接的字段修改之后,SQL正常运行并查出了对应数据。
Oracle ORA-01722: invalid number 错误分析相关推荐
- oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”
如题,Oracle数据库里面有一批记录,现在我想根据其中一个叫:txn_date的字段来查询记录,在Hbm文件中我配置了该HQL,如下所示: select {job.*} from Newslette ...
- 关于Oracle执行sql语句报错[ORA-01722: invalid number]无效数字解决思路
一.问题提示 执行Oracle的sql语句提示[ORA-01722: invalid number]无效数字错误. 二.问题分析 2.1.类型不匹配 即数据库中字段的设计类型与插入.修改的类型不统一( ...
- Invalid number format for port number(链接ORACLE时忘记加端口出现的错误)
错误:java.sql.SQLException: Invalid number format for port number 原因:连接oracle时端口号错误: 解决: jdbc:oracle:t ...
- Oracle出错 invalid number
报错: invalid number 一定是因为字段关联时,字符串类型和数字类型相关联了.认真点找
- Oracle-ORA-01722 invalid number错误
本来正常的,经过抓包才知道原来是数字型的无意中多了乱码! 本来是3276的居然多了后面一串 3276PuAnrSeU2zliU+IV/FHlnX2Xgia1au2xX2vMWtw http://www ...
- 讨厌麻烦的ora 01722无效数字
webservice开发过程中,数据库由原来的oracle改为现在的sql server.然后重新调试,结果报出ora 01722无效数字的错误. 由于连接oracle数据库的时候并没有问题,所以一开 ...
- Invalid number format for port number
Invalid number format for port number(链接ORACLE时忘记加端口出现的错误) JspException:org.apache.commons.dbcp.SQLN ...
- Oracle Ora 错误解决方案合集
Oracle Ora 错误解决方案合集 参考文章: (1)Oracle Ora 错误解决方案合集 (2)https://www.cnblogs.com/ios9/p/8627643.html 备忘一下 ...
- [burp][CTF]burp intruder爆破出现 Payload set 1: Invalid number settings的解决办法
这是一个软件bug 如果点击start attrack 后出现 Payload set 1: Invalid number settings 的提示,先点hex 后点 decimal 再开始start ...
最新文章
- JS最流行Rust最受喜爱Clojure最赚钱,PHP:那我走?|2021年全球开发者报告
- 公益:开放一台Nacos服务端给各位Spring Cloud爱好者
- 《流畅的Python》一副扑克牌中的难点
- java版本号管理_微服务项目中如何管理依赖版本号?
- 我国共招过多少博士?多少硕士?数据来了!
- 1.5 编程基础之循环控制 33 计算分数加减表达式的值 python
- 让你的Android程序更省电
- 【人工智能】【深度学习】初学者如何选出最适合自己深度学习框架?
- 心脏与阴影,求阴影部分
- python流程控制几种_python基础流程控制与数据类型
- 仿射变换(Affine transformation)与python实践
- ai疾病风险因素识别_克服AI的“蠕动因素”
- 未来教育计算机二级考试系统出错,未来教育计算机二级模拟考试系统
- parted如何将磁盘所有空间格式化_磁盘-使用parted格式化大容量数据盘
- FPGA视频传输bug小记
- [Android] Joystick游戏手柄开发
- Datadog 能成为最大的云监控厂商吗
- iOS内容含有隐藏功能、第三方支付等被拒4次的心路历程
- 感知系统性能评估分析解决方案
- cpu功能解析,cpu功能作用与其工作过程