如何在SQL Server中实现XML美观格式化输出?类似PostgreSQL的jsonb_pretty
SQL Server 格式化XML为美观文本的方法
SQL Server没有像PostgreSQL jsonb_pretty那样专门的内置函数,但可以通过XQuery的serialize功能实现XML的缩进格式化,适用于2016及以上版本。
实现示例
针对你提供的压缩XML:
<Helpers><Thing name="Thing1"/><Thing name="Thing2"/></Helpers>
可以用以下SQL代码生成带缩进的美观格式:
DECLARE @xml XML = '<Helpers><Thing name="Thing1"/><Thing name="Thing2"/></Helpers>'; SELECT CONVERT(NVARCHAR(MAX), @xml.query('serialize(., {"indent": true, "encoding": "utf-16"})') ) AS FormattedXML;
输出结果
<Helpers> <Thing name="Thing1"/> <Thing name="Thing2"/> </Helpers>
关键说明
serialize函数的indent: true参数会自动添加换行和缩进- 指定
encoding: "utf-16"是为了匹配SQL Server XML类型的内部编码,避免字符转换问题 - 如果使用SQL Server 2016之前的版本,可通过自定义CLR函数实现类似功能,但需要额外配置服务器权限
内容的提问来源于stack exchange,提问作者Jack Deeth
相关产品推荐
相关产品推荐

