从XML列中提取值

3
我在Sql Server中有一个表,其中一个列存储了Xml数据。 Xml列的数据如下:
<TestDef Weight="0" FailValue="2" ConceptID="-327">
  <ToleranceDef ObjectType="SomeName" TargetValue="0"TargetRange="2" />
</TestDef>

我需要编写一个查询,从每行 Xml 列中获取所有的 conceptId 值。在这里应该是-327。

我知道我可以将 Xml 列转换为 nvarchar(max),然后使用一些正则表达式来获取值,但不确定如何使用正则表达式。

1个回答

5

这是使用表变量的示例。对于实际表,将是相同的概念:

Declare @XmlTable table (
    Id Integer Identity,
    XmlValue XML
)

Insert Into @XmlTable (XmlValue) values ('<TestDef Weight="0" FailValue="2" ConceptID="-327"><ToleranceDef ObjectType="SomeName" TargetValue="0" TargetRange="2" /></TestDef>')
Insert Into @XmlTable (XmlValue) values ('<TestDef Weight="0" FailValue="2" ConceptID="-325"><ToleranceDef ObjectType="SomeName" TargetValue="0" TargetRange="2" /></TestDef>')


select
    Id,
    XmlValue,
    XmlValue.value('(/TestDef/@ConceptID)[1]', 'integer') as ConceptId
from
    @XmlTable

1
不要使用表变量进行演示,您可以尝试使用SQL Fiddle - Conrad Frix
感谢您的提示,这个网站看起来肯定很有用! - Josh Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接