当我运行以下
select t.type
from (values ('Green'),('Blue'),('Red')) as t(type)
for xml path('')
我收到这个输出
<type>Green</type>
<type>Blue</type>
<type>Red</type>
如果我运行以下
select t.type + '/'
from (values ('Green'),('Blue'),('Red')) as t(type)
for xml path('')
我收到这个输出
Green/Blue/Red/
为什么在 select 中添加串联会导致删除类型标签并在 xml 文件的一行中输出?运行 SQL Server 2012。
XML 很疯狂
当您添加连接的字符串时,您会丢失“路径元素”。
例如,如果您这样做:
你得到这个:
列名或别名充当路径元素。
其他一些可能有帮助的例子
使用
RAW, ELEMENTS
在第一个示例中,您获得通用的“行”元素名称,但在第二个示例中您获得行/类型。
使用时
RAW, TYPE
:第一个查询返回有效的 XML,第二个查询抛出错误,因为路径元素缺少标识符。
使用
AUTO
,表别名和列名变成路径:但是没有别名,你会得到一个类似的错误:
我想举个例子,
FOR XML EXPLICIT
但现在开始喝酒对我来说是不负责任的。