2015-09-04 106 views
1

我一直在研究一個查詢(在SQL Server TSQL中),用0填充數字的左邊,所以輸出總是5位數。查詢填充0字段的左邊

所以:

Select MuNumber From Mytable 

數據11,011,2132,1111

Creates output like 
00011 
02134 
01111 

我試圖LPAD功能,但0的NUMER可以是不同的。

如果Munumber是1,我們需要0000如果mynumber的是34,我們需要000

回答

2

假設MuNumber是VARCHAR簡單地使用RIGHT

SELECT RIGHT('00000' + MuNumber, 5) 
FROM Mytable 

否則,你需要將其轉換第一

SELECT RIGHT('00000' + CONVERT(VARCHAR(5), MuNumber), 5) 
FROM Mytable 

而且一般來說,您可以使用此模式:

DECLARE @num INT = 10; 

SELECT RIGHT(REPLICATE('0', @num) + CONVERT(VARCHAR(5), MuNumber), @num) 
FROM Mytable 
+0

非常好!我完全忘記了正確的功能是TSQ,讓我來測試它。 –

+0

感謝您爲+1快速回答。 –

2

試試這個

select right('00000'+cast(col as varchar(5)),5) from table 
1

您可以創建數據庫的功能後,使用用戶定義的函數udfLeftSQLPadding在那裏你可以SQL Pad Leading Zeros

找到源代碼,則可以按如下

使用
select 
    dbo.udfLeftSQLPadding(MuNumber,5,'0') 
from dbo.Mytable 
0

另一種選擇:

declare @n int = 6 

select stuff(replicate('0', @n), 6-len(n), len(n), n) 
from (values('123'), ('2493'), ('35')) as x(n)