当前位置: 首页 > news >正文

Oracle:将包含属性(Attributes)的 XML 数据解析为表格数据

xml片段:

<feeitemarray>

<feeitemitemno="0"recipeno=""hiscode="sw001"itemname=""itemtype="0"unitprice="7.5"count="100"fee="750"dose="剂型"specification="规格"unit="单位"howtouse="用法"dosage="单次用量"packaging="包装单位"minpackage="最小包装"conversion="换算率"days="天数" babyflag="0" drugapprovalnumber ="药品批准文号" packflag="1" nation_subject_code = “国家收费项目编码" SPE_USE_FLAG="1"/>

</feeitemarray>

在 Oracle 数据库中,将包含属性(Attributes)的 XML 数据解析为表格数据,主要使用 XMLTABLE函数。通过 XPath 表达式提取各个字段。

以下是具体的 SQL 实现方案:

‌使用 XMLTABLE‌:这是 Oracle 处理 XML 最标准且高效的方法。
‌定位节点‌:XPath 指向 /recipearray/feeitemarray/feeitem。
‌映射属性‌:在 COLUMNS 子句中,使用 @属性名 的方式提取 XML 标签内的属性值。
‌数据类型转换‌:根据业务需求,将字符串转换为数字(如 unitprice, count)或日期等类型。

SQL 示例代码

假设 XML 数据存储在一个名为 xml_data 的 CLOB 列中,或者作为一个变量传入:
SELECT
x.itemno,
x.hiscode,
x.itemname,
x.itemtype,
x.unitprice,
x.count,
x.fee,
x.dose,
x.specification,
x.unit,
x.howtouse,
x.dosage,
x.packaging,
x.minpackage,
x.conversion,
x.days,
x.babyflag,
x.drugapprovalnumber,
x.packflag,
x.nation_subject_code,
x.spe_use_flag
FROM
your_table_name t,
XMLTABLE(
'/feeitemarray/feeitem'
PASSING XMLType(t.xml_column) -- 这里替换为实际的XML列名或XMLType变量
COLUMNS
itemno NUMBER PATH '@itemno',
recipeno VARCHAR2(50) PATH '@recipeno',
hiscode VARCHAR2(50) PATH '@hiscode',
itemname VARCHAR2(200) PATH '@itemname',
itemtype NUMBER PATH '@itemtype',
unitprice NUMBER(10, 2) PATH '@unitprice',
count NUMBER PATH '@count',
fee NUMBER(10, 2) PATH '@fee',
dose VARCHAR2(50) PATH '@dose',
specification VARCHAR2(100) PATH '@specification',
unit VARCHAR2(20) PATH '@unit',
howtouse VARCHAR2(200) PATH '@howtouse',
dosage VARCHAR2(50) PATH '@dosage',
packaging VARCHAR2(50) PATH '@packaging',
minpackage VARCHAR2(50) PATH '@minpackage',
conversion NUMBER PATH '@conversion',
days NUMBER PATH '@days',
babyflag NUMBER PATH '@babyflag',
drugapprovalnumber VARCHAR2(100) PATH '@drugapprovalnumber',
packflag NUMBER PATH '@packflag',
nation_subject_code VARCHAR2(50) PATH '@nation_subject_code',
spe_use_flag NUMBER PATH '@SPE_USE_FLAG'
) x;

关键注意事项

‌空值处理‌:
如果某个属性在 XML 中不存在,XMLTABLE 对应的列将返回 NULL。建议在应用层或 SQL 中使用 NVL 函数处理默认值。

‌性能优化‌:
对于大量 XML 数据的解析,确保存储 XML 的列类型为 XMLType 而非 CLOB,这样可以利用 Oracle 的二进制 XML 存储特性,显著提升解析速度。如果必须是 CLOB,Oracle 也会自动转换,但开销稍大。

http://www.jsqmd.com/news/787090/

相关文章:

  • CANN运行时Event管理
  • 搭建个人家庭实验室:用旧电脑组建家庭服务器和私有云
  • Captain AI:全阶段适配不同规模OZON商家
  • Slidev主题定制指南:从openclaw-talk实战到高效技术演讲
  • CANN/hixl LLM配置指南
  • AI驱动宇宙沙盘SpaceMolt:实时星图、SSE与MCP协议实战解析
  • ARM PMU性能监控单元:溢出标志与采样控制机制详解
  • Captain AI以数据为核心,打造OZON智能决策引擎
  • 保时捷裁撤重整数字化研发资源;特斯拉电动重卡的电池参数曝光;小米汽车调整人事筹备海外业务
  • Khoj:构建本地化AI知识库,实现RAG架构下的智能问答
  • 智能网盘直链提取技术突破:九大平台免会员高速下载方案深度解析
  • 基于MCP协议构建AI持久记忆系统:origin-mcp架构与实践指南
  • 大模型+Agent+Skills+MCP,到底啥关系?
  • CANN/hixl缓存接口文档
  • 2026年4月塑料原料回收公司口碑推荐,可靠的塑料原料回收品牌口碑推荐 - 品牌推荐师
  • 2026年评价高的旧房改造实力装修榜 - 品牌宣传支持者
  • 大模型架构拆解:从零件到整体,带你秒懂重复的精密艺术
  • CANNAMCT网络分解功能说明
  • 基于Next.js的ChatGPT Web应用开发:从架构设计到部署实战
  • 深度解析Claude Code CLI:基于LLM的智能命令行工具架构与实现
  • AI智能体驱动无代码开发:从自然语言指令到完整Web应用实战
  • 彻底清理Windows右键菜单:ContextMenuManager可视化管理指南
  • AI文本检测性能评估:从混淆矩阵到ROC曲线的实战解析
  • 2026年评价高的美的空调/美的中央空调专业公司推荐 - 行业平台推荐
  • 毕业设计 大数据校园卡数据分析系统(源码+论文)
  • CANN/sip复数矩阵批量乘法
  • slim-mcp:为AI Agent工具列表智能瘦身,节省70%上下文Token
  • 2026年北京市外资研发中心认定申报要点
  • 5分钟实战指南:掌握Xenos Windows DLL注入器的完整操作流程
  • Nodejs后端服务如何接入Taotoken多模型API接口