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

Oracle数据库中如何提取两个&之间的指定目标字符串

Oracle 字符串提取实现方案

针对给定的&分隔字符串,我们可以结合REGEXP_SUBSTR做分隔提取,再用TRIM处理冗余的空格和&符号,精准提取目标内容。

具体实现代码

单输入字符串场景

如果目标内容是一个完整的拼接字符串,用以下SQL直接提取:

WITH input_data AS (
    SELECT 'O&103122&00:00:00&&          ,  &SECS&1&19.0000&&&          ,  & &10/01/2022 - 10/31/2022&TSIMM:TRUNK SIGNALING - ON NET Charge&&gid=2060155&&10/01/2022 - 10/31/2022&TSIMM:TRUNK SIGNALING - ON NET Charge&&gid=2060155&' AS input_str
)
SELECT
    TRIM(BOTH ' &' FROM REGEXP_SUBSTR(input_str, '[^&]+', 1, 6)) AS extracted_secs,
    TRIM(BOTH ' &' FROM REGEXP_SUBSTR(input_str, '[^&]+', 1, 15)) AS extracted_tsimm1,
    TRIM(BOTH ' &' FROM REGEXP_SUBSTR(input_str, '[^&]+', 1, 22)) AS extracted_tsimm2
FROM input_data;

多字段存储场景

如果原始内容拆分存储在两个字段(比如col1和col2)中,拆分处理如下:

SELECT
    -- 从第一段字段提取SECS
    TRIM(BOTH ' &' FROM REGEXP_SUBSTR(col1, '[^&]+', 1, 6)) AS extracted_secs,
    -- 从第二段字段提取第一个TSIMM内容
    TRIM(BOTH ' &' FROM REGEXP_SUBSTR(col2, '[^&]+', 1, 2)) AS extracted_tsimm1,
    -- 从第二段字段提取第二个TSIMM内容
    TRIM(BOTH ' &' FROM REGEXP_SUBSTR(col2, '[^&]+', 1, 7)) AS extracted_tsimm2
FROM your_table;

关键逻辑说明

  1. REGEXP_SUBSTR 分隔提取:
    • REGEXP_SUBSTR(源字符串, '[^&]+', 1, 位置n):以&为分隔符,提取第n个非空元素([^&]+匹配任意不含&的字符序列)。需根据实际字符串的分隔结构调整位置参数。
  2. TRIM 清理冗余字符:
    • TRIM(BOTH ' &' FROM 提取结果):同时去除字符串前后的空格和&符号,完全匹配需求中的清理规则。如果只需清理单侧冗余,可替换BOTH为LEADING(前缀)或TRAILING(后缀)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:31:02