sql-server - 如何在 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 中完成此任务吗?
解决方案
您可以尝试剥离前导零,然后将三个零连接到前面,例如
SELECT
id,
'000' + SUBSTRING(id, PATINDEX('%[^0]%', id + '.'), LEN(id)) AS id_out,
name
FROM ids;
演示
推荐阅读
- javascript - 如何使用事件 fullCalendar 插件
- odoo - 如何通过 API 将数据添加到多个公司的 res.partner 字段
- python - 无法安装“IfxPy”包
- c - SocketCAN:没有收到电报
- angular - 如何检测材质单选按钮或组何时失去焦点?
- blazor - 如何将值从页面传递到 Blazor 中的布局?
- javascript - (引导程序)Vue Datepicker:如何定义开始和结束日期,使结束日期不能早于开始日期?
- spring - spring boot 无法编译jsp问题
- c++ - 如何在 RTP 标头中添加附加值/参数
- excel - 如何遍历所有工作表以及单元格是否将复制范围与工作表匹配?