私のデータベース テーブルには、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 列に存在するすべての行を見つけたいと考えています。
- PrimaryValue: フィーバー
- DataRowType: 現在
私はこのクエリを使用しています:
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 - Value in Select ステートメントを含めるにはどうすればよいですか?
ありがとうアイワン。しかし、私のWHERE句はこのブロックからのデータのみを満たすので
<DORowData>
<PrimaryValue>Fever</PrimaryValue>
<DataRowType>Present</DataRowType>
<EMRValue1> 103 <EMRValue1 />
<HasPositiveValue>True</HasPositiveValue>
</DORowData>
Select 句の EMRValue1 は、EMRValue1 = 103 の 1 行のみを返す必要があります。