首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将前导0添加到列的一部分的SQL查询

问将前导0添加到列的一部分的SQL查询
EN

Stack Overflow用户
提问于 2016-03-03 17:59:23
回答 3查看 89关注 0票数 1

我需要更新SQL中的列以添加前导零。问题是这个列中有几种格式的数据。

代码语言:javascript
复制
0047
0070-0336
0025-0145
0032-0008
0033-0196 Johnson EEOC Matter

我需要在最后4位之前,或者更确切地说,就在破折号后面加一个0,但是只有4位-4位数字格式(和4-4+ alpha)的行。所以看起来是:

代码语言:javascript
复制
0047
0070-00336
0025-00145
0032-00008
0033-00196 Johnson EEOC Matter

我尝试了几次更新和正确的声明,但无法得到我需要的结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-03 18:08:51

还没测试过。请在执行之前对您的真实数据进行测试。

代码语言:javascript
复制
UPDATE yourTable
SET col = SUBSTRING(col, 0, CHARINDEX('-', col)) 
    + '-0' + 
    SUBSTRING(col, CHARINDEX('-', col) + 1, LEN(col) - CHARINDEX('-', col))
WHERE col LIKE N'____-____%'

这个过滤器只过滤4个字符的行,然后是-,后面是4个字符,后面是任何字符。它以如下方式设置该列:将字符从0到第一个-,追加-0 (而不是-),然后按原样追加列值的其余部分。

票数 1
EN

Stack Overflow用户

发布于 2016-03-03 18:04:31

那替换呢

代码语言:javascript
复制
  SELECT REPLACE(YourField, '-', '-0');
  FROM YourTable

这将取代第一次出现-

代码语言:javascript
复制
  SELECT STUFF(YourField, CHARINDEX('-', YourField), 1, '-0')

但如果你有这个案子会失败的

代码语言:javascript
复制
 0476       jhonso-jhonson   
票数 3
EN

Stack Overflow用户

发布于 2016-03-03 18:11:57

您可以使用以下表达式:

代码语言:javascript
复制
SELECT IIF(CHARINDEX('-', @COL) <> 0, 
           STUFF(@COL, CHARINDEX('-', @COL), 1, '-0'), 
           @COL)

如果是4位-4位或4-4+ alpha格式,这将用'-0‘替换first '-’‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35779582

复制
相关文章

相似问题

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