我一直在构建一个简单的查询,以返回固定宽度记录以导出到较旧的应用程序。我用过
Select Cast([myColumn1] as char(1)), Cast([myColumn2] as char(1)) from myTable
对于单个字符列,但是SQL Server Management Studio中显示的结果始终将其粘贴到4个字符中。例如,对于几个单字符列,它显示:
---- ----
P A
我希望看到:
- -
P A
我有几个问题:
如果我在代码中使用查询,还是会按单个字符宽度进行预期的格式,是否会发生这种情况?我想知道它是否是SSM中输出窗格的功能(尽管输出到文件时表现出相同的行为)。
如果确实发生了,是否有解决方法?
我希望这不是一个愚蠢的问题,但似乎找不到任何文档...
下划线与实际数据无关。4是最小数字SSM会显示。
尝试一下并验证:
DECLARE @varA VARCHAR(4) = 'A'
,@varB VARCHAR(4) = 'B'
SELECT '|'+CAST(@varA AS CHAR(1))+'|'+@varB
对于Microsoft SQL Server Management Studio,您可以在-Tools->"选项"中更改输出格式 ->查询结果 -> SQL Server-> sql Server->结果。
选项菜单
如果您使用的列对输出格式对齐,则将显示为---,并根据数据类型增加,但是它不必匹配数据类型的实际长度,例如大小1的数据将以4 ----。
显示您可以通过以下内容进行测试:
select 'a', CAST(1 AS INT), CAST(1 AS BIGINT)
要验证数据实际长度,您可以在此处使用DataLength -document。
我只是想总结我实际上要找到的是什么。请参阅下面的复制评论。
SSMS结果窗格的已知功能,任何列的返回少于4个字符。这不是记录的,而是一致且可验证的功能。这意味着结果窗格不适合依靠特定格式或返回列的宽度的测试查询。
Is this documented anywhere that you know of, or is it just known through
trial-and-error? – underscore_d 17 hours ago
Viewing query results in SSMS is a bit inconsistent. I wouldn't use SSMS
results window for anything mission critical. – digital.aaron 17 hours ago
@underscore_d, not anywhere that I know of. It was, however, brought up in a
side conversation in a Kimberley Tripp SQL Server training course I attended
many years ago. – digital.aaron 17 hours ago