[英]How to extract values from XML stored as ntext in SQL
我有一個數據庫,試圖在其中查詢在SQL Server中存儲為ntext的XML的列。 為什么不將其存儲為XML? 不確定,但是我無法更改它,因此我嘗試將其轉換為XML格式。 至此,我已經能夠運行它來獲取被視為XML的條目行。
select top 5 cast(cast(ATTR_XML as varchar(max)) as XML)
from dbo.table1
這導致以下被識別為XML
<ArrayOfNameValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NameValue>
<Name>Form_Submit Request_3E6791F5B9884EE2B335BC1F1E1285C5</Name>
<Value xsi:type="xsd:string">ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.34</Value>
</NameValue>
<NameValue>
<Name>Form</Name>
<Value xsi:type="xsd:string">ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.69</Value>
</NameValue>
<NameValue>
<Name>Form_Update Request_E4FA8434326E42ADB6222978214E93E9</Name>
<Value xsi:type="xsd:string">ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.69</Value>
</NameValue>
<NameValue>
<Name>//</Name>
<Value xsi:type="xsd:string"><?xml version="1.0" encoding="utf-8"?><pd:Data xmlns:pd="http://www.test.com/XMLSchema"><pd:Request_Source system_name="Zo5ZCqLRRfV" datatype="object" listID="" listValue="">Coastal Urban</pd:Request_Source><pd:Request_Category system_name="ojZD66m94eu" datatype="object" listID="" listValue="">Information Request</pd:Request_Category><pd:Date_of_Request system_name="KNc4mzCYmYL" datatype="date" listID="" listValue="">05 Feb 2015<pd:Request_Date system_name="QXf1HQ7EFUZ" datatype="string" listID="" listValue="">06-Feb-15 03:38:58</pd:Request_Date><pd:Request_Priority system_name="" datatype="" listID="" listValue=""></pd:Request_Priority></pd:Data></Value>
</NameValue>
</ArrayOfNameValue>
我正在嘗試從中提取元素名稱和值
<Value xsi:type="xsd:string"><?xml version="1.0" encoding="utf-8"?><pd:Data xmlns:pd="http://www.test.com/XMLSchema"><pd:Request_Source system_name="Zo5ZCqLRRfV" datatype="object" listID="" listValue="">Coastal Urban</pd:Request_Source><pd:Request_Category system_name="ojZD66m94eu" datatype="object" listID="" listValue="">Information Request</pd:Request_Category><pd:Date_of_Request system_name="KNc4mzCYmYL" datatype="date" listID="" listValue="">05 Feb 2015<pd:Request_Date system_name="QXf1HQ7EFUZ" datatype="string" listID="" listValue="">06-Feb-15 03:38:58</pd:Request_Date><pd:Request_Priority system_name="" datatype="" listID="" listValue=""></pd:Request_Priority></pd:Data></Value>
我想提取Request_Category為“信息請求”。
如何使用XML方法提取這些內容並將其插入查詢的兩列中,以便獲得名稱和值?
謝謝
DECLARE @XML XML =
'<ArrayOfNameValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NameValue>
<Name>Form_Submit Request_3E6791F5B9884EE2B335BC1F1E1285C5</Name>
<Value xsi:type="xsd:string">ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.34</Value>
</NameValue>
<NameValue>
<Name>Form</Name>
<Value xsi:type="xsd:string">ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.69</Value>
</NameValue>
<NameValue>
<Name>Form_Update Request_E4FA8434326E42ADB6222978214E93E9</Name>
<Value xsi:type="xsd:string">ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.69</Value>
</NameValue>
<NameValue>
<Name>//</Name>
<Value xsi:type="xsd:string"><?xml version="1.0" encoding="utf-8"?><pd:Data xmlns:pd="http://www.test.com/XMLSchema"><pd:Request_Source system_name="Zo5ZCqLRRfV" datatype="object" listID="" listValue="">Coastal Urban</pd:Request_Source><pd:Request_Category system_name="ojZD66m94eu" datatype="object" listID="" listValue="">Information Request</pd:Request_Category><pd:Date_of_Request system_name="KNc4mzCYmYL" datatype="date" listID="" listValue="">05 Feb 2015<pd:Request_Date system_name="QXf1HQ7EFUZ" datatype="string" listID="" listValue="">06-Feb-15 03:38:58</pd:Request_Date><pd:Request_Priority system_name="" datatype="" listID="" listValue=""></pd:Request_Priority></pd:Data></Value>
</NameValue>
</ArrayOfNameValue>';
SELECT
bar.value('local-name(.)','VARCHAR(10)') as ColName,
bar.value('./.','VARCHAR(MAX)') as Value
FROM
@xml.nodes('/ArrayOfNameValue/NameValue/*') AS foo(bar)
結果:
ColName Value
---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Name Form_Submit Request_3E6791F5B9884EE2B335BC1F1E1285C5
Value ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.34
Name Form
Value ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.69
Name Form_Update Request_E4FA8434326E42ADB6222978214E93E9
Value ProjectX-LIB-46c3219d-1fe0-4abb-b559-efb8a3c35505,AgileForm.69
Name //
Value <?xml version="1.0" encoding="utf-8"?><pd:Data xmlns:pd="http://www.test.com/XMLSchema"><pd:Request_Source system_name="Zo5ZCqLRRfV" datatype="object" listID="" listValue="">Coastal Urban</pd:Request_Source><pd:Request_Category system_name="ojZD66m94eu" da
這是您要找的東西嗎? 如果有的話,我希望它是一個好的開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.