如何使用sqlcmd创建固定宽度的输出

时间:2018-09-19 19:06:25

标签: sqlcmd

以下内容在我们的SQL 2008 R2环境中执行,并且一切正常。供应商在SQL Server 2012上执行并设置格式更改。

例如一个简单的选择

Select '1',cast(RIGHT(replace(convert(varchar,[EMPL_EARNINGS].[PAY_PD_END_DT],112),'-',''),6) as CHAR(6)) 

我不能使用-W,因为某些字段用空格填充。

我用相同的语句选择了3个不同的日期字段。
一个正确的6个字符宽,另一个为8个字符,另一个为9个字符。

批处理文件调用为sqlcmd -S ServerName -i "c:\query\myquery.sql" -o "v:\Temp\myouput.dat" -h -1 -s"" -d"DBname"

1 个答案:

答案 0 :(得分:0)

发现即使我使用-h-1,列宽也与列名的宽度匹配。不确定为什么它可以在我们的版本上运行,但不能在供应商上运行。

快速解决方案是将所有列名称缩短为<=所需的列宽。

有兴趣发现REAL修复程序吗?