我的sql表中有一列。我想知道当我的列的值小于10时,如何将前导零添加到我的列中?例如:
number result
1 -> 01
2 -> 02
3 -> 03
4 -> 04
10 -> 10
答案 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