如何将单个 xmltype 标记中的值提取到 oracle 中的不同列中?

安查尔·巴辛

我在包含以下标记的表中有一个 xmltype 列

<LOCATION TYPE="ABS" EPSG="4277" UNIT="decLL">
      <X>-2.12105834</X>
      <Y>49.20372223</Y>
    </LOCATION>

我使用以下查询提取了列中类型的值

SELECT a.object_id,a.xml_data.extract('//LOCATION/@TYPE').getStringVal() AS "Location Type"
FROM   object_history a;

输出是表中单列中的 ABSABSREL。我想在表的单独列中获取每个值。请帮助如何做到这一点?

MT0

使用XMLTABLE

SELECT object_id,
       x.*
FROM   object_history h
       CROSS APPLY XMLTABLE(
         '/LOCATION'
         PASSING h.xml_data
         COLUMNS
           type VARCHAR2(3)  PATH './@TYPE',
           epsg NUMBER       PATH './@EPSG',
           unit VARCHAR2(10) PATH './@UNIT',
           x    NUMBER       PATH './X',
           y    NUMBER       PATH './Y'
       ) x

其中,对于样本数据:

CREATE TABLE object_history ( object_id, xml_data ) AS
SELECT 1, XMLTYPE('<LOCATION TYPE="ABS" EPSG="4277" UNIT="decLL"><X>-2</X><Y>49</Y></LOCATION>') FROM DUAL UNION ALL
SELECT 2, XMLTYPE('<LOCATION TYPE="ABS" EPSG="4277" UNIT="decLL"><X>-1</X><Y>50</Y></LOCATION>') FROM DUAL UNION ALL
SELECT 3, XMLTYPE('<LOCATION TYPE="REL" EPSG="4277" UNIT="decLL"><X>0</X><Y>51</Y></LOCATION>') FROM DUAL;

输出:

对象 ID 类型 EPSG 单元 X
1 ABS 4277 降级 -2 49
2 ABS 4277 降级 -1 50
3 相对可靠性 4277 降级 0 51

db<>在这里摆弄

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Oracle中处理XMLType列

ORACLE SQL:如何从XMLTYPE列中获取XML元素

如何在xmltype Oracle中检查元素的文本节点

如何在Oracle中按xmltype解析XML

Oracle删除XMLTYPE中的多个节点

Oracle从xmltype提取值

Oracle-选择查询中的XMLType列比较

更新 Oracle 12c 中的非架构 XMLType 列?

如何将多个列值提取到Google表格的单个列中?

从Oracle中的xmltype属性获取名称和值

XMLTYPE更新替换Oracle 12c中最后一个标记中的值

将XMLTYPE列数据插入到超过11 KB的Oracle 11g数据库中时出错

如何使用DeleteXML-需要从Oracle中的XmlType删除XML节点

如何在 oracle XMLTYPE XMLTABLE 中备份 1 级路径目录

oracle 中 BLOB 到 XMLType XML 解析失败

如何从Oracle数据库中提取嵌套的XMLType数据?

如何在Oracle中将xmltype提取为xml

将值提取到新列中

Oracle XMLTYPE提取根序言值

基于值和条件的Oracle XMLTYPE提取

如何从 oracle XMLTYPE 列中选择 XML 属性?

如何将列表值传递给 oracle sql 中的单个参数函数

Oracle 11g如何将两个不同列中的值分组

Oracle - 将 XML 节点值提取到以分号作为分隔符的列表中

如何将 JSON 文件中的值提取到数据帧行中的单独列中

R:如何将列中的特定值提取到新列中?

如何将文件中的文本提取到变量中,同时用标记替换该文本?

如何将单个 csv 中的不同块读取到不同的数组中?

Mongoose:如何将子文档中的数组提取到父文档中的单个数组