使用 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)')
希望有人能帮忙 -
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)')