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

如何在Oracle中使用substr/instr按指定关键字拆分字符串

解决方案:Oracle按关键字提取字符串对应值

针对你的需求,不需要依赖逗号的位置,直接用Oracle的REGEXP_SUBSTR函数按关键字匹配提取对应值即可,以下是实现代码:

SELECT
    criteria,
    -- 提取SampleNum对应的值
    REGEXP_SUBSTR(criteria, 'SampleNum: ''([^'']+)''', 1, 1, NULL, 1) AS SampleNum,
    -- 提取SampleState对应的值
    REGEXP_SUBSTR(criteria, 'SampleState: ''([^'']+)''', 1, 1, NULL, 1) AS SampleState,
    -- 提取Action对应的值
    REGEXP_SUBSTR(criteria, 'Action: ''([^'']+)''', 1, 1, NULL, 1) AS Action,
    -- 提取CollectionReason对应的值
    REGEXP_SUBSTR(criteria, 'CollectionReason: ''([^'']+)''', 1, 1, NULL, 1) AS CollectionReason
FROM table1;

代码说明:

  • REGEXP_SUBSTR的参数逻辑:
    1. 目标列:criteria
    2. 匹配正则:'关键字: ''([^'']+)''',其中[^'']+表示匹配单引号之间的所有非单引号字符,精准捕获值的部分
    3. 起始位置:1(从字符串开头开始匹配)
    4. 匹配次数:1(取第一次匹配的结果)
    5. 匹配选项:NULL(使用默认匹配规则)
    6. 分组编号:1(返回正则中括号()包裹的分组内容,也就是我们要的具体值)

这个方法的优势是不依赖关键字在字符串中的顺序,不管这些键值对怎么排列,都能精准提取到对应的值,完美解决你原来按逗号截取的局限性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:18