如何修改SQL语句生成单根节点的指定格式XML?
解决SQL FOR XML生成单个节点的问题
这个问题我之前也踩过类似的坑,其实就是对FOR XML PATH的参数用法理解有点小偏差~
你原来的SQL语句里用了FOR XML PATH ('root'),这相当于告诉SQL Server:把每一行查询出来的结果都单独包装成一个<root>节点,所以才会出现多个独立的<root>,每个里面只放一个<choice>。
要让所有<choice>都放在同一个<root>里,只需要调整一下FOR XML的参数写法:
SELECT ID AS 'choice/@value', DisplayName AS 'choice' FROM tablename WHERE [Status] = 'open' FOR XML PATH(''), ROOT('root')
我来拆解一下改动的逻辑:
PATH(''):这个设置会让每一行生成的<choice>元素直接拼接在一起,不会给每一行额外添加外层节点;ROOT('root'):这个参数会把所有拼接好的<choice>元素,统一包裹到一个<root>节点里,正好符合你想要的格式。
执行这个语句后,生成的XML就会是你期望的样子:
choice 1 choice 2 choice 3
内容的提问来源于stack exchange,提问作者thegunner
相关产品推荐
相关产品推荐

