代码之家  ›  专栏  ›  技术社区  ›  Alex Argo

如何在SQLServer2005中选择xml列的顶级属性?

  •  20
  • Alex Argo  · 技术社区  · 17 年前

    <Test foo="bar">
      <Otherstuff baz="belch" />
    </Test>
    

    我希望能够以varchar的形式获取Test的foo属性(根元素)的值。我的目标大致如下:

    select cast( '<Test foo="bar"><Otherstuff baz="belch" /></Test>' as xml).value('@foo','varchar(20)') as Foo
    

    当我运行上述查询时,出现以下错误:

    Msg 2390,16级,状态1,第1行 XQuery[value()]:顶级属性 不支持节点

    2 回复  |  直到 17 年前
        1
  •  45
  •   marc_s MisterSmith    17 年前

    约翰·桑德斯几乎是对的:——)

    declare @Data XML
    set @Data = '<Test foo="bar"><Otherstuff baz="belch" /></Test>'
    
    select @Data.value('(/Test/@foo)[1]','varchar(20)') as Foo
    

    这对我很有用(SQLServer2005和2008)

    马克

        2
  •  6
  •   bojidar alexandrov    10 年前

    如果您不知道根元素:

    select @Data.value('(/*/@foo)[1]','varchar(20)') as Foo