oracle - 甲骨文 | 使用正则表达式导出的 XML 数据
问题描述
我创建了一个查询来从表的 XML 列中提取数据但是当 XML 有数据列表时我遇到了问题,即
可乐品牌里面有多个代码
查看我的查询
select extract(cola_info, '/ns2:cola/coke/bottleCode', 'xmlns:ns2="http://myColaStaticInfo.com"') as op;
输出类似于
我想一个接一个地突出显示内容,而不是在一列中一起突出显示。
任何想法!!!
我的 XML 看起来像这样
<?xml version="1.0" encoding="ISO-8859-15" standalone="yes"?>
<ns2:cola xmlns:ns2="http://myColaStaticInfo.com">
<coke>
<code>Bottle_2829</code>
<label>Mirinda</label>
</coke>
<coke>
<code>Bottle_2830</code>
<label>Mirinda</label>
</coke>
<coke>
<code>Bottle_2831</code>
<label>Mirinda</label>
</coke>
</ns2:cola>
解决方案
XMLTable
可能是您最好的选择。尤其是extract
在被弃用之后。
with example_data as (select xmltype('<?xml version="1.0" encoding="ISO-8859-15" standalone="yes"?>
<ns2:cola xmlns:ns2="http://myColaStaticInfo.com">
<coke>
<code>Bottle_2829</code>
<label>Mirinda</label>
</coke>
<coke>
<code>Bottle_2830</code>
<label>Mirinda</label>
</coke>
<coke>
<code>Bottle_2831</code>
<label>Mirinda</label>
</coke>
</ns2:cola>') as xml from dual)
-- query
select bottle_coke
from example_data e
cross join XMLTABLE(XMLNAMESPACES('http://myColaStaticInfo.com' as "ns2"),
'/ns2:cola/coke'
PASSING e.xml
COLUMNS
bottle_coke XMLTYPE PATH 'code'
) xt;
输出:
<code>Bottle_2829</code>
<code>Bottle_2830</code>
<code>Bottle_2831</code>
推荐阅读
- java - 使用 Intent 发送带有设备信息的电子邮件
- keras - Google Colab中更改网络后如何防止内存分配错误?
- excel - 单元格选择更改时自动调用vba中的子例程?
- assembly - x86 和 x64 中的 ret 指令有什么区别?
- azure - 是否可以将 terraform 输出下载为 .json 文件?
- python - 如何将图像转换为兼容的希尔伯特曲线数据
- python - 如何仅显示前 20 个条目
- java - 为 javax.ws.rs REST API 解析 JSON 中的日期
- ruby-on-rails - RSpec:我可以禁用某些共享示例测试吗?
- r - R中一个列表的元素与另一个列表中的元素的克罗内克积之和