我有一个包含XML的CLOB。
<attrs>
<attr name="1">
<string>stringvalue</string>
</attr>
<attr name="2">
<integer>1</integer>
</attr>
<attr name="3">
<integer>2</integer>
</attr>
<attr name="4">
<boolean>false</boolean>
</attr>
</attrs>如何获得只包含布尔属性和名称属性?
XMLTABLE('/attrs/attr/boolean'
PASSING XMLTYPE(CLOB)
COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '???',
ATTRIBUTEVALUE VARCHAR2(5) PATH '.'
) X这样,我就只有价值了,怎么才能得到父母的名字呢?我可以使用‘/attr/attr’,但是我不知道如何只获得布尔值(也许我需要在之后进行筛选?)
谢谢!
发布于 2021-05-27 10:39:45
您可以在列路径中的树上走回:
'./../@name'因此,这意味着:
XMLTABLE('/attrs/attr/boolean'
PASSING XMLTYPE(CLOB)
COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH './../@name',
ATTRIBUTEVALUE VARCHAR2(5) PATH '.'
) X用你的数据得到:
ATTRIBUTENAME ATTRIBUTEVALUE
------------- --------------
4 false您还可以在主XPath中应用一个子节点筛选器:
'/attrs/attr[boolean]'然后获取该attr节点的名称及其子boolean节点,给出:
XMLTABLE('/attrs/attr[boolean]'
PASSING XMLTYPE(your_CLOB)
COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '@name',
ATTRIBUTEVALUE VARCHAR2(5) PATH 'boolean'
) X结果是一样的。
https://stackoverflow.com/questions/67720206
复制相似问题