在SQL脚本中使用新值更新XML元素值



我在XYZ表的一列中有XML,这里我需要用新值而不是0.00更新Amount标记,然后PolicyReference和AccountReference我需要更新这些标记中的两个不同值而不是Blank。例如

<PolicyReference>7657576567</PolicyReference>
<AccountReference>7657576875</AccountReference>

这是我专栏中的XML:-

<document>
<StatusCode>ACV</StatusCode>
<PaymentMethodDetail>
<EFT>
<AccountNumber>123456789</AccountNumber>
<AccountName>ABCDEFGHIJK</AccountName>
</EFT>
</PaymentMethodDetail>
<PaymentExtendedData>
<CHECK>
<Source>System</Source>
<SourceType>ACH</SourceType>
</CHECK>
</PaymentExtendedData>
<PostMarkDate />
<EntryUserId>1</EntryUserId>
<Amount>0.00</Amount>
<EntryDate />
<PolicyLineOfBusiness>LOL</PolicyLineOfBusiness>
</PolicyReference>
</AccountReference>
<AccountId>2034001793</AccountId>
</document>

这就是我尝试过的:-

Update XYZ
SET XmlPayload.modify('replace value of (//document/PolicyReference/)[1] with "<PolicyReference>275654</PolicyReference>"')
where PaymentSearchId =18785

我收到一条错误消息,请建议我:-消息9341,级别16,状态1,第4行XQuery[XYZ.XmlPayload.modify((]:"("附近出现语法错误,应为步骤表达式。

应该这样做-使用字符串Replace用字符串来做,因为您的XML不是有效的XML,XML功能将不适用于它。但是字符串将

UPDATE XYZ
SET XmlPayload = REPLACE(CAST(XmlPayload AS NVARCHAR(MAX)), ' </PolicyReference>', '<PolicyReference>7657576567</PolicyReference>')
WHERE PaymentSearchId =18785

最新更新