我在我的sql表中有一列。我想知道如何在我的列的值小於10時將前導零添加到列中?因此,例如:如何在數字小於10時添加前導零?
number result
1 -> 01
2 -> 02
3 -> 03
4 -> 04
10 -> 10
我在我的sql表中有一列。我想知道如何在我的列的值小於10時將前導零添加到列中?因此,例如:如何在數字小於10時添加前導零?
number result
1 -> 01
2 -> 02
3 -> 03
4 -> 04
10 -> 10
您可以使用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
Felix的解決方案是偉大的,除非你在你的表格有100以上的數字,在這種情況下,嘗試使用一個case語句來代替:
Select case when Number between 1 and 9
then '0' else '' end + cast(number as varchar(3))
感謝您的幫助,我也會嘗試 – RedRocket
另一種方法,
select case when number <10 then replicate('0',1)+cast(number as varchar)
else cast(number as varchar) end
爲什麼使用REPLICATE?爲什麼不只是「0」? –
偉大@FelixPamittan,你是對的。如果我們必須重複只有一個0然後複製將不會使用,但incase當0將重複,然後罰款。我只是想顯示不同的方法,它也會幫助其他用戶。 – KumarHarsh
而且還多了一個解決方案:
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...
結果
0
123
**
一般來說,你應該在表示層做這個格式,而不是在數據庫層。 – RichardCL
如果值大於100或1000,結果如何? –