我的号码必须至少为7位数。例如:
0000001
123456789
0012345
全部有效。只有当它的长度低于7时,我才需要用0填充数字。如何在SQL Server中执行此操作?如果长度小于7,我能得到的最好的是填充数字,但是在此之上,它会开始截断数字。
答案 0 :(得分:6)
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;
答案 1 :(得分:0)
Aaron Bertrand打败了我。
我想补充说,封装字符和重复次数也是有用的,这样如果它需要在将来的某个时间进行更改,那么很容易做到。您可以使用REPLICATE执行此操作。所以扩展亚伦的例子:
DECLARE @num_digits as int = 7
SELECT RIGHT(REPLICATE('0', @num_digits) + col, @num_digits) FROM dbo.table;
答案 2 :(得分:0)
嗨检查一下。
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