1
我有一個表:是否可以在列中操作xml?
create table foo (id int, reportDef xml)
列reportDef
包含一個長XML字符串。
<Report>
<Criterias>
<Criteria name="Date Range">...</Criteria>
<Criteria name="Advertisers">
<Elements>
<Element name="CheckBoxOne">
<Value>0</Value>
</Element>
<Element name="ListViewAvailable">
<Value>314</Value>
<Value>57</Value>
<Value>18886</Value>
<Value>7437</Value>
</Element>
</Elements>
</Criteria>
<Criteria name="Revenue Types">...</Criteria>
</Criterias>
</Report>
對於那些元素標準的name屬性是「廣告」和元素元素的name屬性是「ListViewAvailable」的情況下,我想刪除的價值元素,其中的值是57和18886.所以,我有處理完成後, ,XML應該看起來像這樣:
<Report>
<Criterias>
<Criteria name="Date Range">...</Criteria>
<Criteria name="Advertisers">
<Elements>
<Element name="CheckBoxOne">
<Value>0</Value>
</Element>
<Element name="ListViewAvailable">
<Value>314</Value>
<Value>7437</Value>
</Element>
</Elements>
</Criteria>
<Criteria name="Revenue Types">...</Criteria>
</Criterias>
</Report>
這是可能與SQL Server,特別是版本2005?到目前爲止,我得到了提取可用值的查詢,但不知道在哪裏進行操作和更新列。
SELECT C.value('.', 'varchar(100)'), t.id
FROM foo t
CROSS APPLY t.reportDef.nodes('
/Report/Criterias/Criteria[@name="Advertisers"]
/Elements/Element[@name="ListViewAvailable"]
/Value
') Z(C)
無法將其刪除之前生成XML?在你的選擇聲明? – McNets
@McNets xml已經生成並位於數據庫中。 – AngryHacker
看看替換值https://www.mssqltips.com/sqlservertip/2738/examples-of-using-xquery-to-update-xml-data-in-sql-server/ – McNets