如何在T-SQL 2005或2008中的数值前添加零?

时间:2016-07-06 13:46:30

标签: sql-server tsql

我必须以固定格式导出表格。当我有数字字段时,我必须添加前导零。

我知道SQL Server 2012,我可以使用FORMAT()。在SQL Server 2005中怎么办?

例如,在编号为18的列中,固定长度为10,我必须导出:

0000000018

4 个答案:

答案 0 :(得分:3)

您必须将其转换为varchar并使用right

select right(replicate('0', 10) + convert(varchar(10), YourNumberColumn), 10)

答案 1 :(得分:3)

我更喜欢语法

SELECT REPLACE(STR(YourNumber,X),' ','0')

X是您想要的位数。

优势:如果输入宽于目标长度,其他方法会减少数量并导致错误结果。这种方法会创建一个星号链(" ***")

试试这个

DECLARE @tbl TABLE(Nmbr INT)
INSERT INTO @tbl VALUES(1),(12),(123),(1234);

SELECT REPLACE(STR(Nmbr,3),' ','0')
FROM @tbl

结果:

001
012
123
***

答案 2 :(得分:0)

right('00000000' + cast(YourValue as varchar(10)), 10)

答案 3 :(得分:0)

你可以这样做

replicate('0', 10 - Floor(LOG10(myField) + 1) + myField