1

我的数字必须至少为 7 位数字。例如:

0000001
123456789
0012345

都是有效的。只有当它的长度低于 7 时,我才需要用 0 填充数字。我如何在 SQL Server 中执行此操作?我能得到的最好的方法是在长度小于 7 时填充数字,但在此之上,它开始截断数字。

4

3 回答 3

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;
于 2012-07-10T01:42:23.003 回答
0

Aaron Bertrand 打败了我。

我想补充一点,封装字符和必须重复的次数也可能很有用,这样如果将来某个时候需要更改,很容易做到。您可以使用REPLICATE执行此操作。所以扩展亚伦的例子:

DECLARE @num_digits as int = 7
SELECT RIGHT(REPLICATE('0', @num_digits) + col, @num_digits) FROM dbo.table;
于 2012-07-10T01:50:59.163 回答
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
于 2012-07-10T11:00:13.153 回答