Xpath 和 Oracle XMLTABLE
Xpath and Oracle XMLTABLE
我有一个包含 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>
如何获得 only 布尔属性和 name 属性?
XMLTABLE('/attrs/attr/boolean'
PASSING XMLTYPE(CLOB)
COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '???',
ATTRIBUTEVALUE VARCHAR2(5) PATH '.'
) X
这样,我只有值,怎么也能得到父@name?
我可以使用 '/attrs/attr' 但我不知道如何只获取布尔值(也许我需要在之后过滤?)
谢谢!
您可以通过以下方式在列路径中返回树:
'./../@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
得到相同的结果。
我有一个包含 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>
如何获得 only 布尔属性和 name 属性?
XMLTABLE('/attrs/attr/boolean'
PASSING XMLTYPE(CLOB)
COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '???',
ATTRIBUTEVALUE VARCHAR2(5) PATH '.'
) X
这样,我只有值,怎么也能得到父@name? 我可以使用 '/attrs/attr' 但我不知道如何只获取布尔值(也许我需要在之后过滤?)
谢谢!
您可以通过以下方式在列路径中返回树:
'./../@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
得到相同的结果。