sql - 使用 xml.modify 或 SQL 中的其他方法更改元素名称

标签 sql xml t-sql xml.modify

假设您有一个 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/

相关文章:

sql - 如何识别 SQL Server 中依赖关系已损坏的 View ?

sql - 使用表列值之一创建额外的总和列

c# - 如何将元素反序列化为 XmlNode?

php - 如何在 PHP 中对多个脚本调用进行排队?

mysql - 多对一hibernate在删除一个时删除多个?

html - 如何将 css 应用到特定的 xml/xsl 元素?

sql-server - 使用滚动小计和百分比进行查询

sql-server - 如何搜索具有扩展字符的类似语句

php - 比较mysql中的两个逗号分隔值并获取匹配的计数

sql - 关系代数