检查xml父级中是否存在两个xml节点

时间:2015-05-18 09:24:24

标签: sql xml oracle plsql

我试图确定xml标记是否有两个特定的子标记。

XML Clob的格式如下:

<ProductS>
<id>1</id>
<Discount></Discount>
<Promotion></Promotion>
</ProductS>
<ProductS>
<id>2</id>
<Discount></Discount>
</ProductS>

我希望我的xmlquery通过此XML clob并确定在ProductS下是否存在包含这两种折扣和促销类型的xml标记。

我的代码目前看起来像这样:

select existsNode(xmltype(rec1.xml), '/ProductS/Discount') into v_node_exists_discount from dual;
select existsNode(xmltype(rec1.xml), '/ProductS/Promotion') into v_node_exists_promotion from dual;

以上这两个陈述是否会在这种情况下起作用,或者我是否需要做其他事情。

感谢。

1 个答案:

答案 0 :(得分:3)

我不熟悉oracle,但您可以使用单个xpath轻松查询<ProductS><Discount> <Promotion>,如下所示:

/ProductS[Discount and Promotion]

oracle查询可能看起来像这样:

select existsNode(xmltype(rec1.xml), '/ProductS[Discount and Promotion]') 
into v_node_exists_discount_and_promotion 
from dual;
相关问题