最近我使用的Oracle数据库被迁移到PostgreSQL 12.8。但是我似乎不明白如何在postgresql中查询XML字段。
XML字段:
<abap version="1.0">
<values>
<ARCHIVE_INDEX>
<FUNCTION>DARA</FUNCTION>
<MANDANT>400</MANDANT>
<DEL_DATE>0000-00-00</DEL_DATE>
<SAP_OBJECT>PRINTDOC</SAP_OBJECT>
<AR_OBJECT>ISU_BILL</AR_OBJECT>
<OBJECT_ID>600030023597</OBJECT_ID>
<RESERVE>COMMIT</RESERVE>
</ARCHIVE_INDEX>
</values>
</abap>
**在Oracle上:*查询:SELECT EXTRACTVALUE(b.XML, '//ARCHIVE_INDEX/OBJECT_ID') AS OBJECT_ID FROM table_name b
* 结果: OBJECT_ID 600030023597
**PostgreSQL上:**查询:SELECT xpath('//ARCHIVE_INDEX/OBJECT_ID', b.XML::xml) AS OBJECT_ID FROM table_name b
- 结果:* OBJECT_ID {[XML]}
我正试图得到与甲骨文之前的结果相匹配的结果。
1条答案
按热度按时间gtlvzcf81#
它几乎在评论中回答,但为了完整起见,这里有一个例子:
拥有
然后,
其中xpath函数的返回值是基于xml数组1的,之后是一对类型转换。
工作样品和official docs