首页 > 解决方案 > 如何在 SQL Server 中添加前导零

问题描述

我有一个关于 SQL Server 的问题:如何添加前导三个 000(零)而 id 在 SQL Server 中没有前导零?

CREATE TABLE [dbo].[ids]
(
     [id] [VARCHAR](50) NULL,
     [name] [VARCHAR](50) NULL
) ON [PRIMARY]
GO

INSERT INTO [dbo].[ids] ([id], [name]) VALUES (N'09', N'abc')
GO

INSERT INTO [dbo].[ids] ([id], [name]) 
VALUES (N'0098', N'de'), (N'987', N'j'), (N'00056', N'i'),
       (N'6', N'z'), (N'0908', N'u'),
       (N'99999999', N'u'), (N'7522323838483', N'i')
GO

基于上述数据,我希望输出如下:

name    | id
--------+-----------
abc     | 0009
de      | 00098
j       | 000987
i       | 00056
z       | 0006
u       | 000908
u       | 00099999999
i       | 0007522323838483

我试过这样:

SELECT 
    RIGHT('000' + id, 3) id, [name]
FROM 
    [dbo].[ids]

但上面的查询没有返回预期的结果。

您能告诉我如何编写查询以在 SQL Server 中完成此任务吗?

标签: sql-serversql-server-2012

解决方案


您可以尝试剥离前导零,然后将三个零连接到前面,例如

SELECT
    id,
    '000' + SUBSTRING(id, PATINDEX('%[^0]%', id + '.'), LEN(id)) AS id_out,
    name
FROM ids;

在此处输入图像描述

演示


推荐阅读