【问题标题】:How to add a node to xml value in MySql如何在 MySql 中将节点添加到 xml 值
【发布时间】:2014-08-04 10:53:46
【问题描述】:

我的示例 xml 值看起来像

    <food>
     <name>Belgian Waffles</name>
     <price>$5.95</price>
     <description>
     Two of our famous Belgian Waffles with plenty of real maple syrup
     </description>
     <calories>650</calories>
    </food>

我需要将此&lt;Shop&gt;KFC&lt;/Shop&gt; 添加到食物标签中,我的输出应该如下所示

  <food>
    <name>Belgian Waffles</name>
    <price>$5.95</price>
    <description>
    Two of our famous Belgian Waffles with plenty of real maple syrup
    </description>
    <calories>650</calories>
    <Shop>KFC</Shop>
  </food>

我尝试了 UpdateXml,但行为不同。是否可以使用可用的 xml 函数 在 MySql 中执行此操作?

我是 MySql 的新手。请帮我弄清楚这个.. 提前谢谢..

更新:

我试过这段代码

select UpdateXML('<food>
 <name>Belgian Waffles</name>
 <price>$5.95</price>
 <description>
 Two of our famous Belgian Waffles with plenty of real maple syrup
 </description>
 <calories>650</calories>
</food>', '/food/Shop', '<Shop>KFC</Shop>');

在第二个参数中我尝试了 '/food/Shop' 仅使用 '/food' 但它没有给出预期的结果

【问题讨论】:

  • 您为什么不发布您使用或尝试使用的任何代码?

标签: mysql xml


【解决方案1】:

原来在 MySql 中做这件事有点棘手。您可以通过用&lt;calories&gt; + 新的&lt;shop&gt; 节点替换现有的&lt;calories&gt; 节点来实现。

使用ExtractValue() 函数获取现有&lt;calories&gt; 的值并构造&lt;calories&gt;value&lt;/calories&gt; 块:

set @data = N'<food>
 <name>Belgian Waffles</name>
 <price>$5.95</price>
 <description>
 Two of our famous Belgian Waffles with plenty of real maple syrup
 </description>
 <calories>650</calories>
</food>';

set @data =UpdateXML(@data, 
                     '/food/calories', 
                     concat(
                        '<calories>',
                         ExtractValue(@data, '/food/calories'),
                        '</calories><Shop>KFC</Shop>'
                        )
                    );
select @data

Fiddle demo for this answer

类似问题:MySQL to update an XML attribute

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多