有人可以帮我更正进入 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 存储在名为 的 Oracle 表中Cars
,该表具有标题为“id”、“version”和“xml_document”的列。
用于提取我想要的信息的 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
...但它根本没有提取任何信息。它应该拉出一个记录。我确定数据存在于 XML 中,并且当我在extractValue
调用内部更改 XPath 以获取其他值时,此语句有效,因此很明显我的 SQL 中的 XPath 是错误的。
/a:CarDetails/b:Wheels/b:Rims[b:BrandName="Bravo"]/b:Model/b:Name
extractValue
任何人都可以就我的 SQL命令应该是什么样的 XPath 提供任何建议吗?
提前致谢。