Oracle数据中number数据类型的问题

在使用RestTemplate调用第三方接口时,遇到请求成功但返回结果异常的问题。通过Postman验证接口本身无误,排查后发现数据库中number类型字段丢失了0开头的值。原因是number类型无法存储0开头的数据。解决方案是将字段改为varchar类型或者新增varchar字段替换原有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

诉说辛酸史

今天安排到写一个请求第三方接口的功能,使用RestTemplate:

小子拿到接口文档,话不多少直接上复制粘贴大法,一顿操作猛如虎啊,拼接请求体JSON格式完事,然后run application,点击发送。

哦豁!!!请求成功了,但是请求结果不是预想的结果。。。。。。

心想是不是对接接口服务有问题,于是Postman,又一顿操作,点击Send,不仅请求成功了,结果跟预想的也一样。。。。。。

然后开始了查找bug的艰难之路,JSON格式对了又对、参数对了又对;发现都没问题,开始饶头。最后把请求参数打印出来,在一一对着文档,终于让我发现问题;

有个参数值出现了问题:

 复制的时候是:“08710XXXXXXX”

存在数据库中编程了 : “8710XXXXXXX”

少了最前面的 0 对应的数据类型 number


进入正题

问题:存到数据库中的数据,值变了,缺少了。

原因:number数据类型,不能存0开头的数据,会帮你删了开头的0。

解决办法:

1、修改数据类型为varchar,如原来已经有数据会报错,采用方法2

2、新增varchar字段,更新为number字段的值,删除原来number字段;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值