如何在SQL Server 2005数据库中使用T-SQL使用零填充NVARCHAR字段?

gwc*_*gwc 1 sql t-sql dynamics-crm dynamics-crm-4

我有一个Orders表,它将Ordernumber存储为NVarChar.我们通过按降序查询最大订单号排序并返回前1然后添加1来手动递增订单号.我们在Microsoft CRM 4.0中实现了此功能.

例如订单号(NVarchar)

99
456
32
Run Code Online (Sandbox Code Playgroud)

当我查询上面的值时,它返回99而不是456.我想使用SQL Server 2005中的sql脚本将所有当前的订单号填充到000099或000456之类的内容.所以上面的例子将是

000099
000456
000032
Run Code Online (Sandbox Code Playgroud)

为了实现这个目的,我必须编写什么SQL脚本?

p.c*_*ell 11

这是LessThanDot上一个很棒的填充教程.

DECLARE @Numbers TABLE
(Num INT) 

INSERT @Numbers VALUES('1')
INSERT @Numbers VALUES('12')
INSERT @Numbers VALUES('123')
INSERT @Numbers VALUES('1234')
INSERT @Numbers VALUES('12345')
INSERT @Numbers VALUES('123456')
INSERT @Numbers VALUES('1234567')
INSERT @Numbers VALUES('12345678')   

SELECT RIGHT(REPLICATE('0', 8) + CONVERT(NVARCHAR(8),Num),8) FROM @Numbers
Run Code Online (Sandbox Code Playgroud)

这将导致:

00000001
00000012
00000123
00001234
00012345
00123456
01234567
12345678
Run Code Online (Sandbox Code Playgroud)

  • 我还会考虑使用REPLICATE('0',8)而不是文字字符串'00000000' (2认同)