私はテーブルを持っている:xmlを列で操作することは可能ですか?
create table foo (id int, reportDef xml)
列reportDef
は長いXML文字列が含まれています。要素条件のname属性は、私は私が処理を行っています後ようにするには値が57と18886.されている値の要素を削除する、「広告主」と要素要素のname属性は「ListViewAvailable」である状況では
<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>
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)
は、それを削除することができませんか?あなたのselectステートメントで? – McNets
@McNets xmlはすでに生成されており、データベースに入っています。 – AngryHacker
値を置き換えるを参照してくださいhttps://www.mssqltips.com/sqlservertip/2738/examples-of-using-xquery-to-update-xml-data-in-sql-server/ – McNets