Chu*_*ebs 1 xml sql-server xml-dml
我的MSSQL数据库中有一个XML列,其架构类似于:
<Form>
<Version>1000</Version>
<OtherValues />
</Form>
Run Code Online (Sandbox Code Playgroud)
我需要手动将所有行的Version数字(通过脚本)更改为1001.在搜索时,我可以推断出我将使用.modifyXPath函数,但我发现的所有示例都是用于插入节点,而不是编辑它们.
有人可以说明如何做到这一点吗?
示例数据设置:
DECLARE @t TABLE (
Id int
, X xml
)
INSERT @t VALUES ( 1, '
<Form>
<Version>1000</Version>
<OtherValues />
</Form>
'
)
INSERT @t VALUES ( 2, '
<Form>
<Version>1000</Version>
<OtherValues />
</Form>
'
)
Run Code Online (Sandbox Code Playgroud)
更改前数据:
SELECT * FROM @t
Id X
----------- ------------------------------------------------------------
1 <Form><Version>1000</Version><OtherValues /></Form>
2 <Form><Version>1000</Version><OtherValues /></Form>
Run Code Online (Sandbox Code Playgroud)
数据更新:
UPDATE @t
SET X.modify('
replace value of
(/Form/Version[.="1000"]/text())[1]
with
"1001"
')
Run Code Online (Sandbox Code Playgroud)
更改后的数据:
SELECT * FROM @t
Id X
----------- ------------------------------------------------------------
1 <Form><Version>1001</Version><OtherValues /></Form>
2 <Form><Version>1001</Version><OtherValues /></Form>
Run Code Online (Sandbox Code Playgroud)
注意事项:
replace value of要求'待替换'表达式标识"静态单例",即解析器必须能够计算出它引用单个值 - 因此[1].modify!因此,如果您在一行中有多个XML节点,则必须手动迭代| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |