【问题标题】:How to get element values from an XML column?如何从 XML 列中获取元素值?
【发布时间】:2017-03-09 02:38:14
【问题描述】:

我在下面的列中有 XML。我需要到达 \Report\Criterias\Criteria (其中 name="Advertisers")\Elements\Element(where name="ListViewAvailable")。从这里我需要列出 Value 元素中的所有数字。

到目前为止,我得到了:

SELECT xmlColumn.query('/Report/Criterias/Criteria/Elements/Element')
from tbl

但不知道如何过滤。

<Report>
  <Criterias>
    <Criteria name="Date Range">
        ...
    </Criteria>

    <Criteria name="Advertisers">
      <Elements>
        <Element name="CheckBoxOne">
          <Value>0</Value>
        </Element>
        <Element name="ListViewAvailable">
          <Value>314</Value>
          <Value>57</Value>
          <Value>18886</Value>
          <Value>7437</Value>
        </Element>
      </Elements>
    </Criteria>
    <Criteria name="Revenue Types">
      ...
    </Criteria>
  </Criterias>
</Report>    

【问题讨论】:

    标签: sql sql-server xml xpath sql-server-2005


    【解决方案1】:

    您可以将谓词 ([]) 与 CROSS APPLY 结合使用进行过滤,以在 Value 元素级别上分解 XML:

    SELECT C.value('.', 'int') AS Value
    FROM tbl t
    CROSS APPLY t.xmlColumn.nodes('
        /Report/Criterias/Criteria[@name="Advertisers"]
        /Elements/Element[@name="ListViewAvailable"]
        /Value
    ') T(C)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      相关资源
      最近更新 更多