假设您有一个 TSQL 查询:
1 as 'Category1/@Level',
2 as 'Category2/@Level',
t.MainCat as 'Category1',
t.SubCat as 'Category2'
FOR XML PATH (''), ROOT('Taxonomy')
生成以下结果:
<Taxonomy>
<Category1 Level="1">Clothing</Category1>
<Category2 Level="2">Jeans</Category2>
</Taxonomy>
元素 Category1 和 Category2 具有唯一的名称,用于生成 SQL 查询并将其转换为 xml 格式。这就是我使用类别 1 和类别 2 的原因。我希望最终的结果是这样的:
<Taxonomy>
<Category Level="1">Clothing</Category>
<Category Level="2">Jeans</Category>
</Taxonomy>
这可以使用 XML EXPLICIT like here 来完成,但由于我的代码更大,它很快就会变得非常困惑和复杂。
使用 xml.modify,您可以更改值或属性,但不能更改元素本身。
有没有办法将第一个查询结果存储在@X1 xml变量中,然后将元素Category1和Category2更改为Category并将其放入变量@X2中?类似在文本文件中使用的搜索和替换,但在查询期间使用。
最佳答案
在元素之间偷偷添加一个 null 可以解决这个问题:
Select
1 as 'Category/@Level',
t.MainCat as "Category",
null,
2 as 'Category/@Level',
t.SubCat as "Category"
FOR XML PATH (''), ROOT('Taxonomy')
关于sql - 使用 xml.modify 或 SQL 中的其他方法更改元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040868/