当前位置:  开发笔记 > 数据库 > 正文

如何在SELECT FOR XML查询中选择返回的列名?

如何解决《如何在SELECTFORXML查询中选择返回的列名?》经验,为你挑选了2个好方法。

MS SQL有一个方便的解决方法,用于将多行的列值连接成一个值:

SELECT col1
 FROM table1
 WHERE col2 = 'x'
 ORDER by col3
 FOR XML path('')

并返回一个很好的记录集:

XML_F52E2B61-18A1-11d1-B105-00805F49916B                                     
---------------------------------------- 
FooBar

只返回记录集中的列名是相当讨厌的!

列名似乎包含随机元素(或GUID),因此我不愿意在我的应用程序中使用它(不同的实例或不同的服务器可能有另一个GUID).不幸的是我无法使用*来选择值,并且由于现有应用程序中的限制,我无法迭代返回的列,或者......

有没有办法强制返回的记录集中的列名更合理?



1> kristof..:

应该这样做:

select(
SELECT col1
 FROM table1
 WHERE col2 = 'x'
 ORDER by col3
 FOR XML path('')
) as myName

不漂亮但应该给出你需要的结果



2> Black Light..:

试试这个...

select
(
    select '@greeting' = 'hello', '@where' = 'there', '@who' = 'world'
    for xml path ('salutation'), type
) as 'MyName'

注意:如果省略"for xml"之后的"type",你会得到(我认为)一个字符串.


对.如果要保留结果列的xml数据类型,则需要TYPE.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有