首页 > 解决方案 > 从多个属性选择的 XML 中读取

问题描述

如何Flow sensor="DUT" unit="adc" testpoint="1"在 SQL Server 中查询此特定 XML 结果以获取下面的所有值?

<Phitrics>
  <TestResults>
    <ParametricData>
      <CalibrationDiagnostic>
        <Flow sensor="DUT" unit="adc" testpoint="0">0</Flow>
        <Flow sensor="Cal" unit="L/min" testpoint="0">0.0</Flow>
        <Flow sensor="DUT" unit="adc" testpoint="1">24</Flow>
        <Flow sensor="Cal" unit="L/min" testpoint="1">1.9</Flow>
        <Flow sensor="DUT" unit="adc" testpoint="2">41</Flow>
      </CalibrationDiagnostic>
    </ParametricData>
  </TestResults>
</Phitrics>

我试过了;

SELECT XmlResults.value('data(/Phitrics/TestResults/ParametricData/CalibrationDiagnostic/Flow sensor="DUT" unit="adc" testpoint="1"/text())[1]', 'varchar(10)')    
FROM table

但我收到以下错误:

XQuery [ResultsTbl.XmlResults.value()]: ',' or ')' 预期

不知道我在这里做错了什么,任何帮助将不胜感激!

标签: sqlsql-serverxmltsql

解决方案


你错过了:

  1. []属性匹配条件周围的方括号 ( )
  2. 使用“@”前缀属性名称
  3. 分别添加每个匹配条件
select XmlResults.value('data(/Phitrics/TestResults/ParametricData/CalibrationDiagnostic/Flow[@sensor="DUT"][@unit="adc"][@testpoint="1"]/text())[1]', 'varchar(10)')
from Table

推荐阅读