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

Oracle正则表达式:提取VARCHAR字段中P_TYPE=>后的单引号内文本

Oracle中提取VARCHAR字段里P_TYPE=>后单引号内的文本

可以用两种方法实现需求,根据场景选择即可:

方法一:使用基础字符串函数(兼容所有Oracle版本)

通过INSTR定位关键位置,再用SUBSTR截取目标文本:

SELECT 
  SUBSTR(
    your_column,
    -- 定位到P_TYPE=>'之后的起始位置
    INSTR(your_column, 'P_TYPE=>''') + LENGTH('P_TYPE=>'''),
    -- 计算要截取的长度:从起始位置到下一个单引号的距离
    INSTR(your_column, '''', INSTR(your_column, 'P_TYPE=>''') + LENGTH('P_TYPE=>''')) 
    - (INSTR(your_column, 'P_TYPE=>''') + LENGTH('P_TYPE=>'''))
  ) AS extracted_text
FROM your_table;

方法二:使用正则表达式(Oracle 10g及以上版本)

用REGEXP_SUBSTR直接匹配目标内容,写法更简洁:

SELECT 
  -- 正则匹配P_TYPE=>'后的非单引号内容,返回第一个捕获组
  REGEXP_SUBSTR(your_column, 'P_TYPE=>''([^'']+)''', 1, 1, NULL, 1) AS extracted_text
FROM your_table;

补充说明

  • 如果字段中存在多组P_TYPE=>'xxx',可以调整REGEXP_SUBSTR的第四个参数(匹配序号),比如写1,2就能提取第二组的内容
  • 若没有匹配到目标内容,结果会返回NULL,可以用NVL函数替换成默认值,例如NVL(REGEXP_SUBSTR(...), '')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 01:24:53