我的数字必须至少为 7 位数字。例如:
0000001
123456789
0012345
都是有效的。只有当它的长度低于 7 时,我才需要用 0 填充数字。我如何在 SQL Server 中执行此操作?我能得到的最好的方法是在长度小于 7 时填充数字,但在此之上,它开始截断数字。
我的数字必须至少为 7 位数字。例如:
0000001
123456789
0012345
都是有效的。只有当它的长度低于 7 时,我才需要用 0 填充数字。我如何在 SQL Server 中执行此操作?我能得到的最好的方法是在长度小于 7 时填充数字,但在此之上,它开始截断数字。
SELECT CASE WHEN LEN(CONVERT(VARCHAR(12), column)) > 7 THEN
CONVERT(VARCHAR(12),column) ELSE
RIGHT('0000000' + CONVERT(VARCHAR(12), column), 7) END
FROM dbo.table;
Aaron Bertrand 打败了我。
我想补充一点,封装字符和必须重复的次数也可能很有用,这样如果将来某个时候需要更改,很容易做到。您可以使用REPLICATE执行此操作。所以扩展亚伦的例子:
DECLARE @num_digits as int = 7
SELECT RIGHT(REPLICATE('0', @num_digits) + col, @num_digits) FROM dbo.table;
嗨,看看这个。
declare @num table(num varchar(10))
insert into @num
VALUES('0000001'),('123456789'),('0012345'),('123'),('11')
select CASE when len(num) < 7 then REPLICATE('0',(7-len(num)))+num else num END from @num