You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用REGEXP_SUBSTR从XML格式CLOB数据中提取指定多值?

提取XML CLOB中指定Param标签的value属性值

别用正则表达式处理XML——XML的结构灵活性(比如换行、属性顺序、嵌套节点)会导致正则匹配不稳定,推荐用Oracle原生的XML处理函数实现,精准且可靠。

示例原始XML(模拟你的数据结构)

<Root>
  <Params>
    <Param name="job" value="ANA_AZ_CONS_MA"/>
    <Param name="job" value="AZI_PROCESSO_MA"/>
    <Param name="job" value="CAMBI_MA"/>
    <Param name="other_param" value="无关值"/>
  </Params>
</Root>

正确的SQL查询语句

假设你的表名为your_table,存储XML的CLOB字段为xml_clob_column,执行以下语句即可提取所有目标值:

SELECT job_value
FROM your_table,
     XMLTABLE(
       '/Root/Params/Param[@name="job"]'
       PASSING XMLTYPE(xml_clob_column)
       COLUMNS job_value VARCHAR2(100) PATH '@value'
     );

说明

  1. XMLTYPE(xml_clob_column):将CLOB类型的XML数据转换为Oracle可解析的XML类型对象
  2. XMLTABLE:通过XPath表达式/Root/Params/Param[@name="job"]定位所有name属性为job的Param标签
  3. COLUMNS子句:提取标签的value属性值,命名为job_value

如果你的XML根节点或层级路径和示例不同,只需修改XPath表达式即可适配实际结构。

内容的提问来源于stack exchange,提问作者Gabriel Alejandro Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:55:18