当前位置: 首页 > 面试题库 >

将列值作为属性添加到xml字段

辛承志
2023-03-14
问题内容

我想将属性值添加到查询中的xml字段中。我的例子如下

declare @table table (bookid int,xmlCol xml)
insert into @table
select 1,
'<book title="you are not alone" author="Esther">
  <EDITIONS>
    <edition year="2012"/>
    <edition year="2013"/>
  </EDITIONS>
</book>'

declare @table1 table(bookid int,quantity int)
insert into @table1
select 1,3

select ??? 
from @table t
inner join @table1 t1
on t.bookid = t1.bookid

我希望我的最终结果看起来像这样

<book title="you are not alone" author="Esther" quantity="3">
  <EDITIONS>
    <edition year="2012"/>
    <edition year="2013"/>
  </EDITIONS>
</book>

问题答案:

如果需要选择数据,则可以使用xquery:

select
    t.xmlCol.query('
         element book {
             for $i in book/@* return $i,
             attribute quantity {sql:column("t1.quantity")},
             for $i in book/* return $i
         }
    ')
from @table t
    inner join @table1 t1 on t.bookid = t1.bookid

[sql fiddle demo](http://sqlfiddle.com/#!3/d41d8/21875)

甚至更简单:

select
    t.xmlCol.query('
         element book {
             book/@*,
             attribute quantity {sql:column("t1.quantity")},
             book/*
         }
    ')
from @table t
    inner join @table1 t1 on t.bookid = t1.bookid

[sql fiddle demo](http://sqlfiddle.com/#!3/d41d8/21883)



 类似资料:
  • 问题内容: 我试图找出最好的方式来添加值到这是一个在。我想建立一个按联系人名字的首字母排序的联系人字典。例如[A:[Aaron,Adam等…],B:[Brian,Brittany等],…] 我发现此功能: 并尝试在循环中使用它: 但是当我尝试使用它时,它用一个新数组替换了现有数组。我知道我可以手动检查字典中的键是否存在,如果存在,则检索数组,然后附加一个新值,否则添加新的键/值对,但是我不确定Sw

  • 我想在gradle.properties文件中添加ndk.abifilters属性。现在我有了这栋楼里的房子。这是我建筑的一部分 这是我的gradle.properties文件的一部分

  • 我有麻烦了。 问题是我试图将一个对象添加到这个对象的列表中。这个列表是一个属性,没有错误,但是当我运行它的时候,它失败了,因为:“NullReferenceException”。听起来合乎逻辑,因为列表的属性是“null”,但我不能声明一个属性,是吗? 她有些代码被剪掉了: [...] [...]

  • 问题内容: 如何添加到特定内容?不起作用。 问题答案: jQuery <1.9 jQuery 1.9以上

  • 问题内容: 考虑以下代码示例: 从PHP 5.3开始,这将产生(类似)以下输出: 但是下面的代码: …仅发出错误: 为什么将这些属性“添加”到对象?请注意,它们没有定义为手册页DateTime`上的类的一部分。 问题答案: 发生了一些魔术,但这很简单。 DateTime类没有您要访问的公共变量“date”。但是,作为PHP工作方式的副作用,在该类上调用print_r或var_dump时会创建一个变