我尝试了以下查询:
select
*,
(select ''as br for xml path(''),elements,type)r1,
(select ''as br,''as br for xml path(''),elements,type)r2,
(select ''as br1,''as br2 for xml path(''),elements,type)r3
from
(select 'v1' c1) t
结果是:
c1 r1 r2 r3
v1 <br></br> <br /> <br1></br1><br2></br2>
为什么r2
仅具有结束标记?
我认为应该是<br></br><br></br>
我使用别名'br/br'
然后:
select
*,
(select ''as br for xml path(''),elements,type)r1,
(select ''as br,''as br for xml path(''),elements,type)r2,
(select ''as 'br/br' for xml path(''),elements,type)r2_bis,
(select ''as br1,''as br2 for xml path(''),elements,type)r3
from
(select 'v1' c1) t
和结果:
c1 r1 r2 r2_bis r3
v1 <br></br> <br /> <br><br></br></br> <br1></br1><br2></br2>
答案 0 :(得分:1)
SQL Server压缩了两个节点,因为它们具有相同的名称。您需要将它们拆分。一种方法是使用空字符串,例如:
SELECT *,
(SELECT '' AS br FOR XML PATH(''), ELEMENTS, TYPE) AS r1,
(SELECT '' AS br, '', '' AS br FOR XML PATH(''), ELEMENTS, TYPE) AS r2,
(SELECT '' AS br1, '' AS br2 FOR XML PATH(''), ELEMENTS, TYPE) AS r3
FROM (SELECT 'v1' AS c1) t;
哪个返回<br /><br />