SQL (Oracle) ステートメントに入る XPath ステートメントを修正して、以下の XML からモデルの価格を抽出するのを手伝ってもらえますか<BrandName>
。そのモデル名は「Bravo」で、モデル名は「XYZ789」です。
<CarDetails>
<Wheels>
<Rims>
<BrandName>Acme</BrandName>
<Model>
<Name>ABC123</Name>
<Price>$350.00</Price>
</Model>
</Rims>
<Rims>
<BrandName>Bravo</BrandName>
<Model>
<Name>XYZ789</Name>
<Price>$250.00</Price>
</Model>
<Model>
<Name>GHI456</Name>
<Price>$300.00</Price>
</Model>
</Rims>
</Wheels>
</CarDetails>
上記の XML Clob はCars
、「id」、「version」、および「xml_document」というタイトルの列を持つ という Oracle テーブルに格納されます。
必要な情報を抽出するための SQL ステートメントは次のようになります。
SELECT *
FROM (
SELECT x.xml_document.GetClobVal()
FROM Cars x
WHERE
extractValue(x.xml_document,
'/a:CarDetails/b:Wheels/b:Rims[b:BrandName="Bravo"]/b:Model/b:Name',
'xmlns:a="cars:instance:3_1" xmlns:b="cars:conceptualcomponent:3_1"'
) in ('XYZ789')
ORDER BY x.id, x.version
)
where ROWNUM <= 100
...しかし、それはまったく情報を引き出しません。1 つのレコードを引き出す必要があります。データが XML に存在することは確かです。このステートメントは、extractValue
呼び出し内で XPath を変更して他の値を取得すると機能するため、SQL の XPath が間違っていることは明らかです。
/a:CarDetails/b:Wheels/b:Rims[b:BrandName="Bravo"]/b:Model/b:Name
extractValue
SQLコマンドのXPathがどのように見えるべきかについて、誰か提案できますか?
前もって感謝します。