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發出了命中。 –
再次感謝,偉大的解決方案。 –