SQL Server 2008データベースのXML列にオブジェクトをシリアル化しました。SQL ServerのXML列からデータを照会
XMLは次のようになります。
<SimpleUserData xmlns="http://schemas.datacontract.org/2004/07/MyProject.CustomFx.Web" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" z:Id="1" z:Type="MyProject.CustomFx.Web.SimpleUserData" z:Assembly="MyProject.CustomFx.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<BatchDescription z:Id="2">I want this value</BatchDescription>
<BatchID>9c437c08-0f28-4c77-9a50-49a7a4e8930a</BatchID>
<BatchTemplateID>And this value too</BatchTemplateID>
</SimpleUserData>
私は要素BatchDescription
とBatchTemplateID
内部の値を表示するクエリを書きたいです。 ;
declare @xmlobj as xml = '<SimpleUserData xmlns="http://schemas.datacontract.org/2004/07/MyProject.CustomFx.Web" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" z:Id="1" z:Type="MyProject.CustomFx.Web.SimpleUserData" z:Assembly="MyProject.CustomFx.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<BatchDescription z:Id="2">I want this value</BatchDescription>
<BatchID>9c437c08-0f28-4c77-9a50-49a7a4e8930a</BatchID>
<BatchTemplateID>And this value too</BatchTemplateID>
</SimpleUserData>';
select
@xmlobj.query('
declare namespace x="http://schemas.datacontract.org/2004/07/MyProject.CustomFx.Web";
(/x:SimpleUserData[1]/x:BatchDescription[1])
') as value1
,@xmlobj.query('
declare namespace x="http://schemas.datacontract.org/2004/07/MyProject.CustomFx.Web";
(/x:SimpleUserData[1]/x:BatchTemplateID[1])
') as value2;
これは近づく:それはこのようになり、今立っているよう
マイクエリタグとのタグ全体が返されます。
にはどうすればいいだけの値(すなわち、「私は、この値をしたい」と「そして、あまりにもこの値」)
は、データ型を指定する二番目のパラメータで代わりに.queryの.VALUE使用してみてください。 –
それは動作します!今私は証明された馬鹿のように感じる:)あなたがこのコメントを実際の答えにするなら、私はupvote&受け入れるでしょう。ありがとう! – JosephStyons