我必须以固定格式导出表格。当我有数字字段时,我必须添加前导零。
我知道SQL Server 2012,我可以使用FORMAT()
。在SQL Server 2005中怎么办?
例如,在编号为18的列中,固定长度为10,我必须导出:
0000000018
答案 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