在SQL Server 2014中,我在表中编写了一个查询。如果我选择“结果到网格”,则结果将逐列列为表格。
但是,如果我发送“结果到文本”,结果会列出一些额外的重影列。我说“鬼”,因为那些空列位于实际列之间。
我没有丢失任何实际的列,但是有一些鬼或空列占据了一些列空间。它们不会在列标题或列中显示任何内容。只需要看起来像一些列的空间。我无法调整它们的大小,但必须使用水平滚动条来查看某些列。
我做过的一件事可能对此有所贡献。创建表后,我修改了一些列,添加了一个新列并重新排列了它们的订单。但是“网格结果”都正确反映了这些变化。只有“结果到文本”显示那些鬼列。
答案 0 :(得分:0)
因为tab
字符或其他特殊字符(如CRLF)存在于字段值中,尤其是在char类型中..以下代码演示了这种行为..
SELECT 1 A, 'normal long long long long long text' B, 1 C, 1 D, 1 E
UNION ALL
SELECT 2, 'test' + CHAR(9) + 'multi-column', 2, 2, 2
UNION ALL
SELECT 3, 'test
break line
text', 3, 3, 3
UNION ALL
SELECT 4 A, 'other normal' B, 4 C, 4 D, 4 E
使用Results to Grid
时看起来很正常,但当更改为Results to Text
时,结果会变得混乱
A B C D E
----------- ------------------------------------ ----------- ----------- -----------
1 normal long long long long long text 1 1 1
2 test multi-column 2 2 2
3 test
break line
text 3 3 3
4 other normal 4 4 4
(4 row(s) affected)
答案 1 :(得分:0)
谢谢Susilo。读完这篇文章之后,我重新检查了表格,发现“ghost”列在列之后是“varchar(50)”类型,并输入“text”,后面有一个非常宽的空列区域。事实上,那些“ghost”列实际上并不是列,而是前面列的扩展列空间。我尝试了一些“结果到文本”的输出格式。我可以修剪列标题以适应列名称的宽度,但除了使用列对齐选项的情况外,记录行不会与其列标题对齐。我想我必须忍受它。至少现在。