以下内容将对您有所帮助,因为我无法弄清楚出了什么问题,我正在使用existNode函数在表中搜索CLOBS,并且能够成功搜索特定值,但是我想做的是检查有效载荷中是否存在可选
表名称:EventPaylods
<A>
<B>
<C>
<C_a> 123</C_a>
<C_b>456</C_b>
</C>
</B>
</A>
因此,鉴于上面的“有效载荷”,我可以使用以下查询在表中“查找”此有效载荷
Select *
From EventPayload
Where existsNode ( PAYLOAD, ‘/*:A/*:B/*:C/*C_a[.=“123”]’)>=1
但是我想做的是找到有效载荷而不知道的值,我做了一些研究,我应该能够通过使用下面的内容来简单地找到它,但是由于某种原因,它根本不起作用,我们将不胜感激
Select *
From EventPayload
Where existsNode ( PAYLOAD, ‘/*:A/*:B/*:C/*C_a’)>=1
答案 0 :(得分:0)
在XQuery中,:
之前的部分是名称空间,之后是标签名称,因此*:A
是任何名称空间和一个名为A
的标签。您似乎没有使用命名空间,因此查询可以简单地写为:
测试数据:
CREATE TABLE eventpayload ( payload CLOB );
INSERT INTO eventpayload ( payload )
VALUES ( '<A><B><C><C_a>123</C_a><C_b>456</C_b></C></B></A>' );
查询:
Select *
From EventPayload
Where existsNode ( XMLTYPE( PAYLOAD ), '/A/B/C/C_a[text()="123"]') = 1;
,并且没有text()
过滤器:
Select *
From EventPayload
Where existsNode ( XMLTYPE( PAYLOAD ), '/A/B/C/C_a') = 1;