再请教一下,sql字符串截取的问题。[我没分了]

binghe27 2016-04-09 05:30:04
表名:userinfo
现字段名:badgenumber
新字段名:badid




请问,如何把badgenumber中左侧的0去除,然后写入到badid字段中,并且,要保留最少4位数。
就是,如果字段中的值是000000612,那么就截成0612.
...全文
140 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2016-04-10
  • 打赏
  • 举报
回复
还有一种思路,如果你的badgenumber中不会有字母之类的,可以转换为数字后和10000比较

declare @s varchar(100)='000000612'

select case when convert(bigint,@s)>10000 then convert(varchar,(convert(bigint,@s))) else right(@s,4) end
binghe27 2016-04-10
  • 打赏
  • 举报
回复
引用 3 楼 Ekun_sky 的回复:
晕,又写错!
update userinfo set badid=right('0000'+substring(badgenumber,patindex('%[^0]%',badgenumber),15),4)
引用 4 楼 u010835426 的回复:
update userinfo set badid= (reverse(left(reverse(badgenumber),4))) from userinfo
2位的命令都只剩下4位了,我是要最少保留4位,不足4位补0. 超过4位的就只去掉左边的0.
Ekun_sky 2016-04-10
  • 打赏
  • 举报
回复
update userinfo set badid=RIGHT('0000'+substring(badgenumber,patindex('%[^0]%',badgenumber),15),
  case when LEN(badgenumber)-patindex('%[^0]%',badgenumber)+1<4 
     then 4 else LEN(badgenumber)-patindex('%[^0]%',badgenumber)+1 end)
binghe27 2016-04-10
  • 打赏
  • 举报
回复
谢谢大家,用6楼的方法解决了我的问题。 另外7楼、8楼的朋友也给了不一样的思路。感谢。
a7747369 2016-04-10
  • 打赏
  • 举报
回复
SELECT  ISNULL(REPLICATE('0',
                         4 - LEN(SUBSTRING(s, PATINDEX('%[^0]%', s), LEN(s)))),
               '') + SUBSTRING(s, PATINDEX('%[^0]%', s), LEN(s))
FROM    ( SELECT    '000004238' s
          UNION ALL
          SELECT    '000684291'
          UNION ALL
          SELECT    '012534289'
          UNION ALL
          SELECT    '000000012'
        ) t;
北冥小渔夫 2016-04-09
  • 打赏
  • 举报
回复
update userinfo set badid= (reverse(left(reverse(badgenumber),4))) from userinfo
Ekun_sky 2016-04-09
  • 打赏
  • 举报
回复
没注意看,写错了,更改一下
update userinfo set badid=right('0000'+substring(patindex('%[^0]%',badgenumber),15),4)
Ekun_sky 2016-04-09
  • 打赏
  • 举报
回复
晕,又写错!
update userinfo set badid=right('0000'+substring(badgenumber,patindex('%[^0]%',badgenumber),15),4)
Ekun_sky 2016-04-09
  • 打赏
  • 举报
回复
update userinfo set badid=right(badgenumber,4)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧