使用SQL从异常XML中提取XML字段中的值

时间:2015-04-01 10:59:41

标签: sql xml xml-parsing

希望有人可以提供帮助 -

XML格式与非常简单的语法结合在一起,但出于某种原因,我很难使用标准值来解析它。类型查询。 我对SQL很有经验,但只有有限的XML经验,经过2个小时的挫折和谷歌搜索后,我以为我要求自己的理智!

数据存储为文本字符串,因此在解析之前将其转换为XML:

 <!-- Data config file --> 
 <Config>   
  <!-- keys-->
  <foo value="bar"/>
  <foo1 value="bar1"/>
  <big_foo value="bar/bar.com"/>
  <other value="f00"/>

我使用的查询是:

SELECT  
 col.value('foo1[0]', 'nvarchar(max)') as VALUE
 from
(
select  
    CAST((SELECT TOP 1 xml_text FROM dbo.xml_lookup)AS XML)
 as Col)x

但是这会返回NULL而不是预期的&#34; bar1&#34;。

知道我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

正确的XPath将是

col.value('(Config/foo1)[1]/@value', 'nvarchar(max)')

<强> sql fiddle demo