SQL-在符号“-”后的左填充为零

时间:2018-09-24 21:33:39

标签: sql sql-server tsql

我正在尝试在'-'之后留下零。 我确实在这里检查了其他答案,但没有帮助我。

这是桌子:

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

如果最后的值在1到9之间,我需要在'-'之后留个零。

我希望结果是:

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

3 个答案:

答案 0 :(得分:2)

您可以将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 |
+----+---------+

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

如果您使用的是 SELECT DISTINCT(locations.id), images.date_uploaded, images.id FROM locations JOIN images on locations.id = images.location_id WHERE images.creator_type = 'User' AND images.creator_id = 105 ORDER BY images.date_uploaded, images.id 版,则2012+函数可以用作:

format

Rextester Demo