oracle字符串查询不加单引号报错 ORA-01722:无效数字

本文探讨了一个关于SQL查询的不寻常现象,即在查询VARCHAR2类型字段时,不加单引号有时能成功返回结果,有时则会报错ORA-01722。原因在于当查询结果可以自动转化为数字时,查询可以成功,但遇到无法转化的字符时会报错。作者通过示例解释了这个问题,并提醒开发者避免此类错误。
摘要由CSDN通过智能技术生成

今天在查找一个生产问题时,发现一个sql,查询字符串的字段,没有拼接单引号,有时会返回成功,有时会返回失败,理论上来说VARCHAR2类型字段查询时应该加单引号,但是也会返回成功就有点不寻常了, 因此仔细查看了下数据,发觉问题所在,因此记录一下,希望大家在以后不再采坑。

就随便拿一个现有的表看一下,表结构如下:

 里边有数据如下:

 查询数据不加单引号,直接报错ORA-01722:无效数字

 我们改下sql,这次不加单引号,查询成功

 由以上两次查询大致可以看出:当在查询的结果中都可以自动转化为数字的时候,不加单引号也能查询,但是当查询结果存在不能自动转化为数字的时候则会报错。

如第一次查询存在code为“1231a”无法自动转化为数字,因此报错,第二次先经过筛选,满足like '132%'条件的都能转化为数字就没问题。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心寒丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值