用前导零填充列中的单个数字

Pad single digit numbers in column with leading zero

我需要用前导零填充字符串字段中的任何单个数字。我只需要用前导零填充单个数字字符,而不是字符串字母字符 (A-Z)。下面是当前数据的示例,以及这些示例的预期输出。

Current output     Expected output:
9                  09    
19                 19   
15                 15
F                  F
UR                 UR           
B                  B  
0                  00    
4                  04
N                  N
00                 00

您可以使用 TRY_CONVERTNULL 非整数值,然后使用连接和 RIGHT 添加前导零:

SELECT ISNULL(RIGHT('00' + CONVERT(varchar(2),TRY_CONVERT(int,YourColumn)),2),YourColumn)
FROM dbo.YourTable;

使用 CASE 表达式检查列是否仅包含 0 到 9。如果为真,则以 0 作为前缀。

查询

select 
  case when col like '[0-9]' 
    then '0' + col
  else col end as newcol  
from tablename;     

case当然需要做一次就可以了。但是,如果您不想更新数据本身并且它只是为了读取或导出,请使用 IIF。这里有一个小例子:

declare @test table (
num nvarchar(10)
)

insert into @test
values ('9'),
       ('19'),
       ('15'),
       ('F'),
       ('UR'),
       ('B'),
       ('0'),
       ('00')

update @test
   set num = IIF(num like ('[0-9]'),'0' + num,num)

select *
  from @testenter code here