【问题标题】:Pulling a value from Xml in a column从列中的 Xml 中提取值
【发布时间】:2013-07-25 16:09:22
【问题描述】:

我在 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) 然后使用一些 reg exp 来获取值但不确定如何使用正则表达式

【问题讨论】:

    标签: sql-server xml tsql


    【解决方案1】:

    这是一个使用表变量的示例。这将是与实际表格相同的概念:

    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
    

    【讨论】:

    • 您可能想尝试SQL Fiddle,而不是为您的演示使用表变量
    • 感谢您的提示,看起来绝对是一个有用的网站!
    猜你喜欢
    • 2019-07-29
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多