在 T-SQL 中透视数据以进行 XML 导出



我的数据库中有一个表,如下所示:

@attribute       element       data
--------------------------------------
attribute1       element1      data1
attribute2       element2      data2

我想输出如下所示的 XML:

<element1 attribute="attribute1">data1</element1>
<element2 attribute="attribute2">data2</element2>

对不起,大约有 30 个实体元素名称,它们有点动态。我对SQL并不是那么有实践或知识渊博。有没有简单的解决方案?除此之外,是否有"最佳实践"解决方案?如果我使用动态 SQL,我应该采取什么措施来捕获/防止潜在错误?

并没有

真正形成有效的xml,因为您没有在示例输出中指定根,但您可以执行类似操作。

SELECT  CAST('<' + element + ' attribute="' + attribute + '">' + data + '</' + element + '>' AS XML)
FROM    Table1
FOR     XML PATH('')

在任何查询的末尾添加FOR XML RAW将生成接近您要查找的 XML。此外,还可以通过在末尾添加元素名称(如 FOR XML RAW ('ELEMENT_PARENT') )或根名称 FOR XML RAW ('ELEMENT_PARENT'), ROOT ('Example') 来指定元素名称。

至于动态元素(或XML化之前的属性)和错误捕获,您可以使用sql提供的任何标准技巧包。

FWIW,我发现这个网站介绍了几个不同的示例,这些示例在从 SQL 脚本输出 XML 数据的方法上越来越复杂。

https://www.simple-talk.com/sql/learn-sql-server/using-the-for-xml-clause-to-return-query-results-as-xml/

最新更新