为sql一字段值中每个特定字符前的最后一个数字加1怎么处理? 10

sql中如有一个字段值为:1788987565327、768374872394903、21437238740213483874629、23412341234252345(... sql中如有一个字段值为:1788987565327、768374872394903、21437238740213483874629、23412341234252345(这是存储于一个字段值中的一串字符串)。其中,顿号间隔的每一组数字位数和尾数不定,现在要使这个字段值中每处顿号前的那一个数字(即7、3、9、5)都分别加1,变成8、4、0、6,使整个结果输出成:1788987565328、768374872394904、21437238740213483874620、23412341234252346。注意其中第三个顿号前的数,从9加1后,输出成0,而不是10。多谢啦。 展开
 我来答
雨夜ぜ狂想5f5
2015-04-02 · TA获得超过178个赞
知道小有建树答主
回答量:476
采纳率:33%
帮助的人:259万
展开全部
declare @a varchar(2048),@b varchar(1024),@c varchar(1024)=''
declare @d varchar(2)
set @a='1788987565327、768374872394903、21437238740213483874629、23412341234252345' ---给a 赋个值
while CHARINDEX('、',@a)>=0
begin
 if CHARINDEX('、',@a)=0
 begin
  set @d=RIGHT (@a,1)+1
  if @d='10'
  set @d='0'
  set @b=LEFT(@a,LEN(@a)-1)+@d
  if @c=''
  set @c=@b
  set @c=@c+'、'+@b
  break
 end
 if CHARINDEX('、',@a)>0
 begin
  set @b=SUBSTRING(@a,1,CHARINDEX('、',@a)-1)
  set @d=RIGHT(@b,1)+1
  if @d='10' 
  set @d='0'
  set @a=SUBSTRING(@a,CHARINDEX('、',@a)+1,LEN(@a)-CHARINDEX('、',@a))
  set @b=LEFT(@b,LEN(@b)-1)+@d
  set @c=@c+'、'+@b
 end
end
select substring(@c,2,LEN(@c)-1) as [结果]

 

flsfycy
2015-04-02 · TA获得超过729个赞
知道小有建树答主
回答量:1002
采纳率:0%
帮助的人:715万
展开全部

这个需要用到plsql(过程、语句块)编程:

  1. 按照顿号拆分

  2. 取倒数第一个字符+1,如果>10则赋值为0

  3. 循环完成后使用顿号连接起来,更新到该行,OK。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式