我需要更新SQL中的列以添加前导零。问题是这个列中有几种格式的数据。
0047
0070-0336
0025-0145
0032-0008
0033-0196 Johnson EEOC Matter我需要在最后4位之前,或者更确切地说,就在破折号后面加一个0,但是只有4位-4位数字格式(和4-4+ alpha)的行。所以看起来是:
0047
0070-00336
0025-00145
0032-00008
0033-00196 Johnson EEOC Matter我尝试了几次更新和正确的声明,但无法得到我需要的结果。
发布于 2016-03-03 18:08:51
还没测试过。请在执行之前对您的真实数据进行测试。
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 (而不是-),然后按原样追加列值的其余部分。
发布于 2016-03-03 18:04:31
那替换呢
SELECT REPLACE(YourField, '-', '-0');
FROM YourTable这将取代第一次出现-
SELECT STUFF(YourField, CHARINDEX('-', YourField), 1, '-0')但如果你有这个案子会失败的
0476 jhonso-jhonson 发布于 2016-03-03 18:11:57
您可以使用以下表达式:
SELECT IIF(CHARINDEX('-', @COL) <> 0,
STUFF(@COL, CHARINDEX('-', @COL), 1, '-0'),
@COL)如果是4位-4位或4-4+ alpha格式,这将用'-0‘替换first '-’‘。
https://stackoverflow.com/questions/35779582
复制相似问题