これを使用して、それをテストするには:
DECLARE @tbl TABLE (ID INT IDENTITY,YourXmlAsString NVARCHAR(MAX));
INSERT INTO @tbl VALUES
('<ParameterValues>
<ParameterValue>
<Name>Sub</Name>
<Value>E23DD735-DCF4-4878-8810-EAC2594C58A4</Value>
</ParameterValue>
<ParameterValue>
<Name>OperatorId</Name>
<Value>1001</Value>
</ParameterValue>
</ParameterValues>');
直接呼び出しは、あなたが探している1つの値を取得する:
WITH Casted AS (SELECT ID,CAST(YourXmlAsString AS XML) AS TheXml FROM @tbl AS t)
SELECT TheXml.value(N'(/ParameterValues/ParameterValue[Name="Sub"]/Value)[1]','uniqueidentifier') AS TheID
FROM Casted
WHERE TheXml.exist(N'/ParameterValues/ParameterValue[Name="OperatorId"]/Value[text()="1001"]')=1
リターンを
E23DD735-DCF4-4878-8810-EAC2594C58A4
はこのようにそれを試してみてください派生テーブルを取得する:
WITH Casted AS (SELECT ID,CAST(YourXmlAsString AS XML) AS TheXml FROM @tbl AS t)
SELECT ID
,pv.value(N'(Name/text())[1]',N'nvarchar(max)') AS Parameter_Name
,pv.value(N'(Value/text())[1]',N'nvarchar(max)') AS Parameter_Value
FROM Casted
CROSS APPLY Casted.TheXml.nodes(N'/ParameterValues/ParameterValue') AS A(pv)
結果
ID Parameter_Name Parameter_Value
1 Sub E23DD735-DCF4-4878-8810-EAC2594C58A4
1 OperatorId 1001
ブリリアント、感謝Shnugo – David