SQL Server 2014 FOR XML PATH实现根节点后添加回车换行
解决SQL Server 2014 FOR XML PATH生成带换行节点的问题
刚好碰到过类似的需求,在SQL Server 2014里要实现每个
示例代码
假设你原本的查询是从BillingTable中生成账单数据,我们可以这样修改:
SELECT STUFF( -- 拼接每个<Billing>片段,中间加回车换行 (SELECT CHAR(13) + CHAR(10) + CAST( -- 为单条数据生成<Billing>节点XML (SELECT CustomerID AS 'CustomerID', Amount AS 'Amount', BillDate AS 'BillDate' FOR XML PATH('Billing'), TYPE -- 使用TYPE避免特殊字符转义异常 ) AS NVARCHAR(MAX)) FROM BillingTable FOR XML PATH(''), TYPE -- 拼接所有片段,保留TYPE避免额外转义 ).value('.', 'NVARCHAR(MAX)'), 1, 2, '' -- 移除开头多余的第一个换行符 ) AS FormattedXML
关键细节解释
FOR XML PATH('Billing'), TYPE:为每条账单数据生成独立的<Billing>...</Billing>节点,TYPE参数确保XML的特殊字符(如&、<)能正确保留,不会被错误转义。CHAR(13)+CHAR(10):这是Windows系统的标准回车换行符,如果供应商系统用的是Unix风格,单独用CHAR(10)即可。STUFF函数:因为拼接后的字符串开头会多一个换行符,用STUFF把前两个字符(回车+换行)替换为空,保证输出的第一个节点顶格。
额外提示
如果你的FOR XML PATH结构即可。
内容的提问来源于stack exchange,提问作者Dillon P
相关产品推荐
相关产品推荐

