SQL - 左边的填充,符号"-"后带有零



我试图在"-"后面留下一个零。 我确实在这里检查了其他答案,但没有帮助我。

下表如下:

+---------+
|   Job   |
+---------+
| 3254-1  |
| 3254-25 |
| 3254-6  |
+---------+

如果最后的值在 1 到 9 之间,我需要在"-"之后留下单零

我希望结果是:

+---------+
|   Job   |
+---------+
| 3254-01 |
| 3254-25 |
| 3254-06 |
+---------+

您可以使用CHARINDEX()SUBSTRING()REPLACE()作为:

CREATE TABLE Jobs(
Job VARCHAR(45)
);
INSERT INTO Jobs VALUES
('3254-1'),
('3254-25'),
('3254-6');
SELECT   CASE 
WHEN CHARINDEX('-', Job, 1)+1 < LEN(Job) THEN Job
ELSE
REPLACE(Job, '-', '-0') 
END AS Job
FROM Jobs;

结果:

+----+---------+
|    |   Job   |
+----+---------+
|  1 | 3254-01 |
|  2 | 3254-25 |
|  3 | 3254-06 |
+----+---------+

如果你想要更新,我认为这是最简单的方法:

update t
set job = replace(job, '-', '-0')
where job like '%-_';

此问题大大简化,因为您只添加了一个填充字符。

如果您有版本2012+,那么format函数可以用作:

select concat(nr1, '-', format( cast ( q2.nr2 as int ), '00')) as result
from
(
select substring(q1.str,1,charindex('-',q1.str,1)-1) as nr1,
substring(q1.str,charindex('-',q1.str,1)+1,len(q1.str)) as nr2
from
(
select '3254-1'  as str union all
select '3254-25' as str union all
select '3254-6'  as str    
) q1
) q2;
result
------
3254-01
3254-25
3254-06

Rextester 演示

最新更新