全部,当名称的值为org_id时,我试图获取元素值的值。此xml由外部进程放置在数据库中我无法控制。 可能有多个 ParematerValue 节点,因此当名称是org_Id时,我不确定 Value 元素的位置。唯一的保证是将只有一个元素名称,其值为org_id。
在这种情况下,有没有办法找到值的值?
示例xml(my_xml)
<ParameterValues>
<ParameterValue>
<Name>car_model</Name>
<Value>All</Value>
</ParameterValue>
<ParameterValue>
<Name>debug</Name>
<Value>0</Value>
</ParameterValue>
<ParameterValue>
<Name>org_Id</Name>
<Value>123456</Value>
</ParameterValue>
</ParameterValues>
My XQuery
select
my_xml.value('(/ParameterValues/ParameterValue/Value)[3]','int') as org_wk
from
#test_xml
where
my_xml.exist('/ParameterValues/ParameterValue/Name[text() = "org_Id"]') = 1
答案 0 :(得分:3)
这应该可以解决问题:
-- sample data
CREATE TABLE #test_xml (my_xml XML);
INSERT #test_xml
VALUES
('<ParameterValues>
<ParameterValue>
<Name>car_model</Name>
<Value>All</Value>
</ParameterValue>
<ParameterValue>
<Name>debug</Name>
<Value>0</Value>
</ParameterValue>
<ParameterValue>
<Name>org_Id</Name>
<Value>123456</Value>
</ParameterValue>
</ParameterValues>');
-- solution
SELECT x2.p.value('(text())[1]', 'varchar(100)')
FROM #test_xml x1
CROSS APPLY x1.my_xml.nodes('//ParameterValue[Name="org_Id"]/Value') x2(p);