4
我对SQL相当陌生,我试图过滤和更改包含购买订单的XML文档的列内部的值。 下面是XML文档的外观和我要搜索的内容的示例。SQL服务器2008 R2中的XML查询/修改问题r2
<TenderLines>
<TenderLineItem>
<tenderTypeId>S0001-00000001</tenderTypeId>
..
..
</TenderLineItem>
<TenderLines>
我有6000多行,并不是所有的都有相同的tenderTypeId。我想过滤掉tenderTypeId中具有'S0001-00000001'的值并将它们更改为'2'
到目前为止,这是我想到的。
USE LSPOS80
DECLARE @replacement as varchar(50)
DECLARE @redundant as varchar(50)
SET @replacement = '2'
SET @redundant = 'S0001-00000001'
Update dbo.POSISTRANSACTIONTABLE
SET TRANSACTIONXML.modify
('replace value of(/RetailTransaction/TenderLines/TenderLineItem/tenderTypeId/@redundant) [1] with sql:variable("@replacement")')
成功执行的查询,但没有什么变化,我想知道如果你们能读在这个并可能给我的提示。
感谢您的时间,最好的问候,Valdi。
P.S.我使用的Microsoft SQL Server 2008 R2 - 速成版
非常感谢你,这工作像一个魅力。 最后两个问题,如果你不介意,那么[1]在.modify行代表什么?我还想知道.exist子句中的= 1。 –
@Ástvaldur - '[1]'表示选择与xquery表达式匹配的第一个节点,因为XMLCol.modify只能在此处一次更新一个值。 'XMLCol.exist()'返回0或1,其中1表示xquery发出了命中。 –
再次感谢,伟大的解决方案。 –