【发布时间】:2017-05-23 20:18:25
【问题描述】:
我正在为客户编写导出文件,他们要求每列的长度恰好为 10 个字符。在 exoprt 我有一个格式为 char(10) 的列,它是我们的发票号,但只有 6 个字符长,所以我需要添加 3 个前导 0。这是我尝试过的:
SELECT '000'+invno, invdte, '000'+item, brnkcomp, tqtyshp,price, bextpri, descrip
FROM artran a
LEFT JOIN arcust b ON a.custno = b.custno
WHERE invdte BETWEEN DATEADD("d",-7,GETDATE()) and GETDATE() AND item IN ('10120','1000290','30234','10491','10747','21449')
但结果总是在 0 和发票编号之间有一个空格。我没有空间。
000 6325290
000 6325301
000 6325331
000 6325357
000 6325369
000 6325400
我也试过这个,结果是在 0 和发票 # 之间有一个空格
SELECT LEFT('000'+CAST(invno AS VARCHAR(15)),15)
FROM artran a
LEFT JOIN arcust b ON a.custno = b.custno
WHERE invdte BETWEEN DATEADD("d",-7,GETDATE()) and GETDATE() AND item IN ('10120','1000290','30234','10491','10747','21449')
000 6325290
000 6325301
000 6325331
000 6325357
000 6325369
000 6325400
我希望输出看起来像这些结果:
0006325290
0006325301
0006325331
0006325357
0006325369
0006325400
我在 SSRS 中运行此导出,因此如果有一种方法可以更轻松地执行此操作,我也可以这样做。谢谢!
【问题讨论】:
-
invno的类型是什么? -
char = 固定长度和带空格的填充 varchar = 可变长度无空格...所以如果你想添加 000 的 RIGHT('0000000000'+ISNULL(trim(field),''), 10)
-
就是这样....感谢 xQBert!
标签: sql sql-server reporting-services sql-server-2008-r2