首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将前导零添加到varchar列

将前导零添加到varchar列
EN

Stack Overflow用户
提问于 2017-04-25 19:50:04
回答 2查看 4.9K关注 0票数 3
代码语言:javascript
复制
Select len(productid),productid,*
 FROM dbo.produts
   where Place = 'KA'
   and len(productid) <> 10
   order by len(productid)

该查询过滤需要更新的数据--我需要以“productid”更新格式不正确的数据--(数据应该是10个字符,以4-2-4格式,在需要它们的地方以0为前导) (productid列是varchar (256)列),基本上,我需要向有条件的varchar列添加前导零。

代码语言:javascript
复制
|productid| |Correct productid value| |
---------------------------------------
|234-55-43||000234-55-43|

|76-7-89||0000076-7-89|

更新这些记录的可能解决办法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-25 20:02:11

如果您希望更正的格式采用您提到的4-2-4格式:

使用parsename()解析字符串的片段,使用right()添加额外的'0'

代码语言:javascript
复制
select 
    col
  , Corrected = right('0000'+parsename(replace(col,'-','.'),3),4)
  + '-' + right('00'+parsename(replace(col,'-','.'),2),2)
  + '-' + right('0000'+parsename(replace(col,'-','.'),1),4)
from t
where col not like '____-__-____'

rextester演示:http://rextester.com/OXM28014

返回:

代码语言:javascript
复制
+-----------+--------------+
|    col    |  Corrected   |
+-----------+--------------+
| 234-55-43 | 0234-55-0043 |
| 76-7-89   | 0076-07-0089 |
+-----------+--------------+

作为最新情况:

代码语言:javascript
复制
update t
  set col = right('0000'+parsename(replace(col,'-','.'),3),4)
            + '-' + right('00'+parsename(replace(col,'-','.'),2),2)
            + '-' + right('0000'+parsename(replace(col,'-','.'),1),4)
where col not like '____-__-____'
票数 1
EN

Stack Overflow用户

发布于 2017-04-25 19:51:18

其实这很简单:

代码语言:javascript
复制
SELECT productid,
       RIGHT('000000000'+productid,10) CorrectProductid
FROM dbo.YourTable
;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43619723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档