在我的数据库表中,我有一个 XML 列。
XML 列中的值如下所示:
第 1 行:
<Data>
<COLRowData>
<DORowData>
<PrimaryValue>Fever</PrimaryValue>
<EMRValue1> 101 <EMRValue1 />
<DataRowType>Past</DataRowType>
<HasPositiveValue>True</HasPositiveValue>
</DORowData>
<DORowData>
<PrimaryValue>Hypertension</PrimaryValue>
<DataRowType>Present</DataRowType>
<EMRValue1> No </EMRValue1>
<HasPositiveValue>False</HasPositiveValue>
</DORowData>
</COLRowData>
</Data>
第 2 行:
<Data>
<COLRowData>
<DORowData>
<PrimaryValue>Diabetes</PrimaryValue>
<DataRowType>Past</DataRowType>
<EMRValue1> No </EMRValue1>
<HasPositiveValue>True</HasPositiveValue>
</DORowData>
<DORowData>
<PrimaryValue>Fever</PrimaryValue>
<DataRowType>Present</DataRowType>
<EMRValue1> 103 <EMRValue1 />
<HasPositiveValue>True</HasPositiveValue>
</DORowData>
</COLRowData>
</Data>
从这个表中,我想找到所有这样的行,其中以下数据组合存在于单个 XML 列中:
- 主要价值:发烧
- 数据行类型:当前
我正在使用这个查询:
Select * From TABLE
WHERE
XML.exist('/Data/COLRowData/DORowData/DataRowType/text()[. = "Present"]') = 1
and
XML.exist('/Data/COLRowData/DORowData/PrimaryValue/text()[. = "Fever"]') = 1
此查询返回两行,因为我的要求是我应该只根据上面提到的组合找到 Row2。
请帮我查询
另外,如何从满足 where 子句的 XML 中包含 EMRValue1 - 选择语句中的值?
谢谢我。但是由于我的 where 子句仅满足来自该块的数据
<DORowData>
<PrimaryValue>Fever</PrimaryValue>
<DataRowType>Present</DataRowType>
<EMRValue1> 103 <EMRValue1 />
<HasPositiveValue>True</HasPositiveValue>
</DORowData>
Select 子句中的 EMRValue1 应仅返回 EMRValue1 = 103 的 1 行