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

如何在Oracle中用正则表达式提取括号内数字并转为行数据

Oracle 正则提取数组字符串数字并转行级输出实现方案

适用场景

输入字符串为类JSON数组格式,如["1101124","1101123","123456"],需要提取括号内所有数字,每个数字单独占一行输出。

基础实现代码

SELECT REGEXP_SUBSTR(src_str, '\d+', 1, LEVEL) AS extracted_num
FROM (
    -- 替换下方语句为你的实际数据源,示例为模拟输入字符串
    SELECT '["1101124","1101123","123456"]' AS src_str FROM dual
) t
CONNECT BY REGEXP_SUBSTR(src_str, '\d+', 1, LEVEL) IS NOT NULL;

逻辑说明

  • REGEXP_SUBSTR函数的第二个参数\d+是正则规则,匹配连续1位及以上的数字片段
  • LEVEL是Oracle递归查询的内置变量,配合CONNECT BY遍历所有匹配到的数字,直到没有新的匹配结果自动终止递归,实现将多个匹配项转成独立行输出

防误匹配优化版

如果你的源字符串除了数组部分之外其他位置也存在数字,可先提取中括号内部的内容再做匹配,避免误提取:

SELECT REGEXP_SUBSTR(arr_content, '\d+', 1, LEVEL) AS extracted_num
FROM (
    -- 第一步提取[]包裹的数组内容
    SELECT REGEXP_SUBSTR(src_str, '\[(.*?)\]', 1, 1, NULL, 1) AS arr_content
    FROM (
        -- 替换为实际数据源
        SELECT '["1101124","1101123","123456"]' AS src_str FROM dual
    ) t
) t
CONNECT BY REGEXP_SUBSTR(arr_content, '\d+', 1, LEVEL) IS NOT NULL;

输出示例

EXTRACTED_NUM
1101124
1101123
123456

内容的提问来源于stack exchange,提问作者Harish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:45:02