MS SQL有一个方便的解决方法,用于将多行的列值连接成一个值:
SELECT col1 FROM table1 WHERE col2 = 'x' ORDER by col3 FOR XML path('')
并返回一个很好的记录集:
XML_F52E2B61-18A1-11d1-B105-00805F49916B ----------------------------------------Foo Bar
只返回记录集中的列名是相当讨厌的!
列名似乎包含随机元素(或GUID),因此我不愿意在我的应用程序中使用它(不同的实例或不同的服务器可能有另一个GUID).不幸的是我无法使用*来选择值,并且由于现有应用程序中的限制,我无法迭代返回的列,或者......
有没有办法强制返回的记录集中的列名更合理?
应该这样做:
select( SELECT col1 FROM table1 WHERE col2 = 'x' ORDER by col3 FOR XML path('') ) as myName
不漂亮但应该给出你需要的结果
试试这个...
select ( select '@greeting' = 'hello', '@where' = 'there', '@who' = 'world' for xml path ('salutation'), type ) as 'MyName'
注意:如果省略"for xml"之后的"type",你会得到(我认为)一个字符串.