在列的宽度内格式化SQL结果

时间:2018-07-20 17:21:34

标签: sql visual-studio ssms sqlplus

我对SQL向导还有另一个疑问。

我正在使用SSMS 2014,并且有一个查询,该查询返回基于包含Y或N的列字段而汇总到某列行中的表的列标题。如果该列具有Y,则应显示在列表,如果包含N,则应将其排除在列表之外。

要汇总的内容并不重要,但是可能需要注意的是,此单元格中的结果是另一个表中多个列标题的串联。

当前结果看起来像这样

(从SSMS输出)

Results continue but are cut off

我希望结果看起来与此类似

(来自excel的屏幕截图。图像仅显示了我想要的结果格式)

Goal Formatting

有什么办法吗?可以通过这种方式在Visual Studio 2017中制作的前端网站上显示结果吗?我最初的网络搜索一直使我指向我不熟悉的SQL * Plus,而SQLPlus似乎无法在SSMS中使用。

编辑:我不确定如何使它更清楚。我在SQL Server Management Studio中使用SQL。我有一个查询,该查询生成一个“逗号”(,)列表,并将结果放入列的单行中。问题是列表的范围超出了列的宽度,并且数据被省略号代替。我希望列表重新堆叠,以使列表中的所有元素都显示在列的宽度中。

此查询的结果最终将显示在Visual Studio 2017中制作的Web应用程序上,因此如果在前端有地方可以处理/格式化数据,则当它显示在gridview中时,逗号列表为叠起来。 (类似于在前端网格视图上显示时如何格式化具有逗号的大数字,我希望此逗号列表中的结果不加长堆叠)

查询代码的发布量很大,与我的问题无关。

最后的例证:

我想要这个

列标题

element1

element2

element3

不是这个

列标题

element1,element2,element3,

更新: 当前使用以下HTML代码在前端网格视图上以足够的列宽显示此SQL查询,以查看最长的数据条目。它还利用SQL查询在所选的每个数据段的末尾加上〜并将其替换为回车符。最好使用%来设置列宽,以使其在不同的屏幕尺寸下缩放(此代码使用像素规范)。

<GridView>
<Columns>
    <asp:TemplateField HeaderText="Formatted Column Header">
        <ItemTemplate>
            <div style="width: 400px;">
                <%# Eval("SQL Column").ToString().Replace("~","<br />") %>
             </div>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

此方法附带三个问题。首先,此gridview是未绑定的,因此可以使用相同的gridview动态显示表/查询。如果尝试显示不包含与指定的“ SQL列”文本匹配的SQL列的表,由于gridview是未绑定的,则将引发错误,因此需要一些条件HTML(javascript)。其次,SQL查询中的原始列在网格视图中显示为〜。第三,模板列数据的上方和下方都有很多额外的空间。

2 个答案:

答案 0 :(得分:0)

除了creating your own SSMS add-in以外,我不知道有什么方法可以做到这一点。就我个人而言,我将数据输出为SSRS报告-您可以设置一个免费的SSRS服务器-您可以在其中对输出格式进行精细控制。

答案 1 :(得分:0)

将鼠标悬停在表格标题右侧的行上,光标将如下所示:

<-|->

然后双击,它应该显示整个条目。但这不会给你:

A,
B,
C

格式,SQL Server不会这样做。但是,您可以创建一个简单的MVC应用程序,并将数据库用作模型。然后,当您创建一个控制器时,您可以使用视图创建它,并使其从选定的表中自动进行CRUD操作。从这里,您可以修改表格大小并使用CSS进行显示。

或者您可以单击查询结果/表左上角的正方形,然后将其复制/粘贴到excel电子表格中,然后在其中修改单元格。希望这会有所帮助!

仅附带说明,在一个单元格中具有多个值是不好的数据库设计。它违背了表设计的第一种正常形式,使查询数据库变得更加困难。

相关问题