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

使用SQL Server 2008表中的新值更新Xml属性

闾丘玮
2023-03-14
问题内容

我在SQL Server 2008中有一个表,其中有一些列。这些列之一是Xml格式,我想更新一些属性。

例如,我的Xml列的名称为XmlText,它在前5行中的值如下:

 <Identification Name="John"  Family="Brown"     Age="30" /> 
 <Identification Name="Smith" Family="Johnson"   Age="35" /> 
 <Identification Name="Jessy" Family="Albert"    Age="60" />
 <Identification Name="Mike"  Family="Brown"     Age="23" />
 <Identification Name="Sarah" Family="Johnson"   Age="30" />

我想将所有Age属性设置为30到40,如下所示:

 <Identification Name="John"  Family="Brown"     Age="40" /> 
 <Identification Name="Smith" Family="Johnson"   Age="35" /> 
 <Identification Name="Jessy" Family="Albert"    Age="60" />
 <Identification Name="Mike"  Family="Brown"     Age="23" />
 <Identification Name="Sarah" Family="Johnson"   Age="40" />

问题答案:

从问题的早期版本看来,您的XML实际上位于表的不同行上。在这种情况下,您可以使用此功能。

update YourTable set
  XMLText.modify('replace value of (/Identification/@Age)[1] with "40"')
where XMLText.value('(/Identification/@Age)[1]', 'int') = 30

使用表变量的工作样本。

declare @T table(XMLText xml)

insert into @T values('<Identification Name="John"  Family="Brown"   Age="30" />')
insert into @T values('<Identification Name="Smith" Family="Johnson" Age="35" />') 
insert into @T values('<Identification Name="Jessy" Family="Albert"  Age="60" />')
insert into @T values('<Identification Name="Mike"  Family="Brown"   Age="23" />')
insert into @T values('<Identification Name="Sarah" Family="Johnson" Age="30" />')

update @T set
  XMLText.modify('replace value of (/Identification/@Age)[1] with "40"')
where XMLText.value('(/Identification/@Age)[1]', 'int') = 30

select *
from @T


 类似资料:
  • 问题内容: 让我们有一个示例片段: 我不知道如何更新该属性的值。 问题答案: 在这里阅读更多有关它的信息。XML数据修改语言(XML DML)

  • 因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?

  • 问题内容: 在数据加载中,似乎某些XML属性映射不正确,我现在正尝试纠正此问题,但在MySQL对XML列的处理方面遇到了麻烦。 我想为带有子字段(属性为’code =“ 3”’)的字段(属性为’tag =“ 520”’)的所有出现的字段纠正XML属性(非值)。下面的查询返回受影响的0行,找到1行。关于如何实现这一目标的任何线索。 为了清晰起见,包含了XML片段: 原始片段 结果是我想要的: 无法解

  • 问题内容: 我在表的一列中有XML ,并且我需要使用新值而不是0.00更新元素,并且使用两个不同值而不是空白的和元素来更新。 例如: 这是我在专栏中的XML: 这是我尝试过的: 我收到一个错误: 消息9341,级别16,状态1,第4行 XQuery [XYZ.XmlPayload.modify()]:“)”附近的语法错误,应包含步骤表达式 问题答案: 我认为这是一个很好的问题,因为它提出了一个有趣

  • 问题内容: 我有一个包含ID和其他几列的CSV文件。我在oracle中也有一张表,其中的ID标识一行。我怎样才能最好地用CSV文件中的值替换表中的值,同时使其他列保持以前的状态? 这必须使用oracle本身提供的工具(即PL / SQL或SQL脚本)来完成,我不能使用“真实的”脚本语言(Python等)或“真实的”程序。 谢谢托马斯 问题答案: 查看Oracle文档中的EXTERNAL TABLE

  • 我有一个表单,其中包含所需的数据,我使用了以下代码: 在同一页面上有一个datatable,它包含我通过表单添加的对象(付款)。添加对象后,我使用以下代码对datable进行更新以添加新对象: 我遇到的问题是,当数据没有输入,我单击按钮,更新完成,表显示为空!但是,验证消息正确地显示为强制数据。 datatable是 我在CDI中使用,因为托管bean如下所示://import //类 }