发布网友 发布时间:2024-10-23 17:25
共1个回答
热心网友 时间:2024-11-02 00:56
select
case when substr(字段,-3,1)=‘9’ then
substr(字段,1,length(字段)-4)||to_char(substr(字段,-4,1)+1)||'0'||to_char(substr(字段,-2))
else
substr(字段,1,length(字段)-3)||to_char(substr(字段,-3)+100) end new from 表(这是oracle的一种写法。)
我尽力写一个通用的,因为你没有说你的字段格式是什么样子的,这里只是考虑了字符长度不相等和百位是9的情况,比如ABC00000这样的,和ABC6900这样的都可以用。
如果都是两位字符+多位数字(数字有最小长度(比如四位))那么可以不用这种方式,因为如果出现AB9900,那么判断9,就要多加好几层了。
如果都是两位字符+多位数字(数字有最小长度(比如四位))那么写法是
因为我记得0000+100=100改为了3位,所以就判断了一个长度是4
select
case when length(to_char(substr(字段,3)+100))<4 then
substr(字段,1,2)||'0'||to_char(substr(字段,3)+100)
else
substr(字段,1,2)||to_char(substr(字段,3)+100) end new from 表
你用正则表达式做也可以,不过就是正则写起来有点麻烦。