2015-09-04 110 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)