首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TSQL中使用xml.modify或其他方法更改元素名称

在TSQL中使用xml.modify或其他方法更改元素名称
EN

Stack Overflow用户
提问于 2014-07-30 15:29:57
回答 2查看 733关注 0票数 2

假设您有一个TSQL查询:

代码语言:javascript
复制
1 as 'Category1/@Level',
2 as 'Category2/@Level',
t.MainCat as 'Category1', 
t.SubCat as 'Category2'
FOR XML PATH (''), ROOT('Taxonomy')

产生的结果如下:

代码语言:javascript
复制
<Taxonomy>
      <Category1 Level="1">Clothing</Category1>
      <Category2 Level="2">Jeans</Category2>
</Taxonomy>

Category1和Category2元素具有惟一的名称,用于生成和转换成xml格式的查询。这就是我使用Category1和Category2的原因。我希望最终结果是这样的:

代码语言:javascript
复制
<Taxonomy>
      <Category Level="1">Clothing</Category>
      <Category Level="2">Jeans</Category>
</Taxonomy>

这可以使用XML显式like here来完成,但是由于我的代码要大得多,所以它变得非常混乱和复杂。

使用xml.modify,您可以更改值或属性,但不能更改元素本身。

是否有一种方法可以将第一个查询结果存储在@X1XML变量中,然后将元素Category1 & Category2转换为Category2并将其放入变量@X2?类似于在文本文件中使用的搜索和替换,但是在查询期间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-30 18:17:26

您也可以使用嵌套:

代码语言:javascript
复制
select
    (select 1 as '@Level', 'Clothing'
        for xml path('Category'), type),
    (select 2 as '@Level', 'Jeans'
        for xml path('Category'), type)
for xml path('Taxonomy');

values子句,用于在形成输出xml之前构造类别列表:

代码语言:javascript
复制
select Cat.Level as '@Level', Cat.Value as 'text()'
from (values
        (1, 'Clothing')
        ,(2, 'Jeans')
    ) Cat(Level, Value)
for xml path('Category'), root('Taxonomy');
票数 1
EN

Stack Overflow用户

发布于 2014-07-30 17:39:47

在元素之间偷偷插入null可以达到以下目的:

代码语言:javascript
复制
Select
1 as 'Category/@Level',
t.MainCat as "Category",
null,
2 as 'Category/@Level',
t.SubCat as "Category"
FOR XML PATH (''), ROOT('Taxonomy')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25040868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档