如何使用 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:querymyquery.sql" -o "v:Tempmyouput.dat" -h -1 -s"" -d"DBname"

发现列宽与列名的宽度匹配,即使我使用的是 -h-1。 不知道为什么它适用于我们的版本,但不适用于供应商。

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

好奇发现真正的修复?

最新更新