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

Extracting values from XML field with unusual XML using SQL

希望有人能帮忙 -

XML 格式使用非常简单的语法组合在一起,但出于某种原因,我很难使用标准 'value' 类型查询来解析它。 我在 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

但是这个 returns NULL 而不是预期的 "bar1".

知道我哪里出错了吗?

正确的 XPath 应该是

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

sql fiddle demo