数字小于10时如何添加前导零?

时间:2016-04-29 06:10:16

标签: sql sql-server

我的sql表中有一列。我想知道当我的列的值小于10时,如何将前导零添加到我的列中?例如:

number   result
1     ->    01
2     ->    02
3     ->    03
4     ->    04
10    ->    10

6 个答案:

答案 0 :(得分:11)

format(number,'00')

版本> = 2012

答案 1 :(得分:9)

您可以使用RIGHT

SELECT RIGHT('0' + CAST(Number AS VARCHAR(2)), 2) FROM tbl

对于长度为>的Number s 2,你使用CASE表达式:

SELECT
    CASE
        WHEN Number BETWEEN 0 AND 99
            THEN RIGHT('0' + CAST(Number AS VARCHAR(2)), 2)
        ELSE
            CAST(Number AS VARCHAR(10))
    END
 FROM tbl

答案 2 :(得分:2)

菲利克斯的解决方案非常棒,除非您的表中的数字大于100,在这种情况下,请尝试使用案例陈述:

Select case when Number between 1 and 9 
    then '0' else '' end + cast(number as varchar(3))

答案 3 :(得分:1)

另一种方法,

select case when number <10 then replicate('0',1)+cast(number as varchar) 
else cast(number as varchar) end

答案 4 :(得分:1)

还有一个解决方案:

SELECT REPLACE(STR(@YourNumber,2),' ','0');

我更喜欢这个,因为如果数字比你指定的数字更宽,其他方法可能会导致随机结果:

但它不会处理负数......

DECLARE @YourNumber INT=123;
SELECT REPLACE(STR(@YourNumber,5),' ', '0')   --pad to five digits
      ,REPLACE(STR(@YourNumber,3),' ', '0')   --pad to 3 digits
      ,REPLACE(STR(@YourNumber,2),' ', '0');  --123 is wider than 2 digits...

结果

00123   
123 
**

答案 5 :(得分:-1)

在另一种方法中,您可以将 10 替换为 2。

declare @ID int =32123;

substring('000000000',1,10-len(cast(@ID as varchar(10)))) +   cast(@Id as varchar(10))

结果: 0000032123