我有一个表格,格式如下:
int IndexField
xml ConfigField
ConfigField字段值可能类似于
<Parameters>
<Parameter Type="Config" Name="Prefix">hd</Parameter>
<Parameter Type="Config" Name="PgNumber">2</Parameter>
<Parameter Type="Config" Name="IsValid">False</Parameter>
</Parameters>
我想知道修改参数XML节点的SQL Server语法,PgNumber
值从2到3 where IndexField = 22
由于
答案 0 :(得分:1)
您可以使用函数modify()
并更正XQuery来设置所需的值。但语法非常棘手。在您的情况下,您应该能够使用此类查询:
UPDATE YourTableName
SET ConfigField.modify('replace value of (/Parameters/Pararameter[@Name="PgNumber"]/text())[1] with "3"')
WHERE IndexField = 22
答案 1 :(得分:1)
这是一个可能的XQuery表达式,要传递给SQL Server的modify()
方法来更新<Parameter Name='PgNumber'>
元素的值:
UPDATE MyTable
SET ConfigField.modify('
replace value of
(/Parameters/Parameter[@Name="PgNumber"]/text())[1]
with 3
')
WHERE IndexField = 22
<强> Sqlfiddle Demo
强>
请注意,在XPath / XQuery中,您需要将@
放在属性名称的开头,以引用XML属性。