1
子ノードの値に基づいてXMLから値を選択するWHERE句を記述できますか?SQL経由でWHERE句を使用したXML子ノードのクエリ
例のXML
<Message>
<PrimaryKeyValue>12345</PrimaryKeyValue>
<Events>
<UpdatedDefaultAddress>True</UpdatedDefaultAddress>
<UpdatedCustomerName>False</UpdatedCustomerName>
</Events>
</Message>
<Message>
<PrimaryKeyValue>67890</PrimaryKeyValue>
<Events>
<UpdatedDefaultAddress>False</UpdatedDefaultAddress>
<UpdatedCustomerName>True</UpdatedCustomerName>
</Events>
</Message>
私の質問
どのように私は<UpdatedDefaultAddress>
の値が '本当' であるPrimaryKeyValuesを選択するクエリを作成しますか?
私の現在のコード
SELECT
t.c.value('(PrimaryKeyValue)[1]', 'varchar(100)') AS PrimaryKeyValue
FROM @message_body.nodes('Message') as T(C)
WHERE t.c.exist('./Events/UpdateDefaultAddress') = 'True'
これに伴う問題は、私は戻って、結果の両方のPrimaryKeyValuesを得ることである - 私は、コードではなく、その中に含まれる値よりも、<UpdatedDefaultAddress>
が存在するかどうかをチェックしていると思いますか?