首页 > 解决方案 > 如何使用 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".

标签: sqlcmd

解决方案


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

快速修复是将所有列名缩短为 <= 所需的列宽。

想知道真正的修复吗?


推荐阅读