用前导零填充列中的单个数字
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_CONVERT
到 NULL
非整数值,然后使用连接和 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
我需要用前导零填充字符串字段中的任何单个数字。我只需要用前导零填充单个数字字符,而不是字符串字母字符 (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_CONVERT
到 NULL
非整数值,然后使用连接和 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