我有一个表xx_xml_data_table
ID XMLDATA creation_date XML_REQUEST_ID
1 10-JAN-2022 113862 10-jan 2022 11386
我有这样的xml数据
<?xml version="1.0"?>
<COLLECTIONSET><PARTY_ID>123</PARTY_ID><ACCOUNT_ID>456</ACCOUNT_ID><LOCATION_ID>789</LOCATION_ID><CONTACT_ID>090</CONTACT_ID>
<COLLECTION>
<CURRSYSDATE>11/15/2022</CURRSYSDATE>
<FIRST_NAME>FNAME</FIRST_NAME>
<LAST_NAME>LNAMEt</LAST_NAME>
<PAYMENT_HISTORY>
<PAYMENT_HISTORY_ROW>
<INVOICE_NUMBER>inv0001</INVOICE_NUMBER>
<PAY_STATUS>OPEN</PAY_STATUS>
<AMOUNT_DUE_ORIGINAL>123</AMOUNT_DUE_ORIGINAL>
<AMOUNT_DUE_REMAINING>100</AMOUNT_DUE_REMAINING>
<INVOICE_CURRENCY_CODE>INR</INVOICE_CURRENCY_CODE>
<ACCTD_AMOUNT_DUE_REMAINING>100</ACCTD_AMOUNT_DUE_REMAINING>
<FUNCTIONAL_CURRENCY>INR</FUNCTIONAL_CURRENCY>
<DUE_DAYS>17</DUE_DAYS>
<DUE_DATE>29-OCT-2022</DUE_DATE>
</PAYMENT_HISTORY_ROW>
<PAYMENT_HISTORY_ROW>
<INVOICE_NUMBER>inv0002</INVOICE_NUMBER>
<PAY_STATUS>OPEN</PAY_STATUS>
<AMOUNT_DUE_ORIGINAL>555</AMOUNT_DUE_ORIGINAL>
<AMOUNT_DUE_REMAINING>200</AMOUNT_DUE_REMAINING>
<INVOICE_CURRENCY_CODE>INR</INVOICE_CURRENCY_CODE>
<ACCTD_AMOUNT_DUE_REMAINING>200</ACCTD_AMOUNT_DUE_REMAINING>
<FUNCTIONAL_CURRENCY>INR</FUNCTIONAL_CURRENCY>
<DUE_DAYS>17</DUE_DAYS>
<DUE_DATE>29-OCT-2022</DUE_DATE>
</PAYMENT_HISTORY_ROW>
</PAYMENT_HISTORY>
</COLLECTION>
</COLLECTIONSET>
我尝试了这个查询,但不工作:
WITH inv AS
(SELECT xt2.INVOICE_NUMBER,
t.ID
FROM xx_xml_data_table t,
XMLTABLE('/COLLECTIONSET/COLLECTION/PAYMENT_HISTORY/PAYMENT_HISTORY_ROW' PASSING t.XMLDATA
COLUMNS "INVOICE_NUMBER" VARCHAR2(40) PATH '@INVOICE_NUMBER' ) xt2
where t.XML_REQUEST_ID IN (11386,11387))
SELECT * FROM inv;
我需要这样的结果:
ID Invoice_number1 inv00011 inv00022 inv40012 inv4002
有谁能帮我一下吗?
在您的示例XML中,INVOICE_NUMBER
是一个节点,而不是一个属性,因此您的路径应该是'INVOICE_NUMBER'
而不是'@INVOICE_NUMBER'
。
您还可以简化一点—您似乎不需要CTE:
SELECT xt2.INVOICE_NUMBER,
t.ID
FROM xx_xml_data_table t,
XMLTABLE(
'/COLLECTIONSET/COLLECTION/PAYMENT_HISTORY/PAYMENT_HISTORY_ROW'
PASSING t.XMLDATA
COLUMNS "INVOICE_NUMBER" VARCHAR2(40) PATH 'INVOICE_NUMBER'
) xt2
WHERE t.XML_REQUEST_ID IN (11386,11387);
ID
相关内容
- 提取XML属性- python
- 使用xmllint——xpath提取XML
- 比嵌套循环更快地提取XML数据的方法?
- c#提取XML段并插入到SQL中
- 使用批处理文件提取xml标记
- Regex:提取XML(倾斜)标记之间的单个单词
- 在不测试已转换为R中的数据帧的XML时,如何提取XML属性
- 从query_to_xml()输出中提取XML值
- 在Oracle中提取XML数据时总是得到空白
- 如何从CSV条目中提取XML数据
- 如何使用Oracle Query从表的xmldata列中提取xml值
- 仅使用xpath提取xml中多个条件的文本-不可能使用代码
- 如何从精确响应中提取XML值
- 在提取xml标记时将文件名附加到输出
- 从SQL Server的xml列中提取xml标记值
- 基于元素值提取XML属性值
- 在DB2中提取XML标记的智能方法
- 提取xml中可用的json标记值
- 在bash脚本中基于其他属性提取XML属性
- r-基于另一个子属性提取XML子属性
最新更新
- 如果不同时更改当前头像,则无法更新用户详细信息
- Kotlin HTTP GET 数据并插入到文本视图中
- 滑块在移动设备上不跟随手指
- 释放WKNavigationAction子类在iOS 15上崩溃
- gst_video_time_code_is_valid在向流添加时间码时断言失败
- 如何杀死Mac上每次重新启动的进程?
- CMake:如何防止'target_link_libraries'将Visual Studio项目引用添加到静态库中?
- 飞镖编码/解码类不起作用
- ADF - Dynamic Sheet
- 无法使用处理程序保存图像。 "Physical path, but a virtual path was expected."
- 在挂载/卸载组件之间重用WebGL上下文
- 可以从Azure Blob Storage下载文件
- Flutter:选中复选框时如何更改标题:TextStyle ?
- 为什么在反应中手动改变状态是一个反模式?
- 我们如何从"git 日志"中排除"由'git notes add'添加的注释"?
- Python递归函数背后的逻辑
- numpy数组大小改变,可能表示二进制不兼容
- 如何在另一个选择菜单中使用来自一个选择菜单的消息
- 如何转换int值从csv到datetime在Spark SQL?
- 如何在同一行中添加输入和按钮
- 让加密403错误当在遗留(EOL)上安装certbot-auto时需要SNI错误
- C对文本文件中的整数进行选择排序,并将排序后的数字写入新文件
- 如何使Java Rest API在处理前半部分后返回响应,然后在返回响应后继续后半部分?
- SvelteKit未看到[id].苗条的文件
- Gitlab CI and php verstion
- ROS2-Gazebo:在立方体的一侧显示图像
- appery.模态离子1中的IO固定组件
- 一种检查is_explicit _constructible的方法
- 从电子表格自动填充谷歌文档
- 由CSS值更改触发的CSS动画
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium