我需要更新SQL中的列以添加前导零。问题是此列中包含多种格式的数据。
0047
0070-0336
0025-0145
0032-0008
0033-0196 Johnson EEOC Matter
我需要在最后4位之前添加零,或者更确切地说是在短划线之后,但是只需要添加4位数 - 4位数字(以及4 -4加alpha)的行。所以它看起来像:
0047
0070-00336
0025-00145
0032-00008
0033-00196 Johnson EEOC Matter
我已经尝试了几个UPDATE和RIGHT语句,但无法获得我需要的结果。
答案 0 :(得分:3)
SELECT REPLACE(YourField, '-', '-0');
FROM YourTable
这将取代第一次出现的-
SELECT STUFF(YourField, CHARINDEX('-', YourField), 1, '-0')
但是如果你有这种情况会失败
0476 jhonso-jhonson
答案 1 :(得分:1)
未经测试。请在执行真实数据之前对其进行测试。
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
(而不是-
),然后将其余列值附加为他们是。
答案 2 :(得分:0)
您可以使用以下表达式:
SELECT IIF(CHARINDEX('-', @COL) <> 0,
STUFF(@COL, CHARINDEX('-', @COL), 1, '-0'),
@COL)
如果 4位--4位或 4 -4 plus alpha 格式,这将取代 first ' - '带'-0'。