【问题标题】:Oracle SQL: Getting text between two sentencesOracle SQL:获取两个句子之间的文本
【发布时间】:2019-09-09 15:03:17
【问题描述】:

我正在尝试从存储在名为“myColumn”的表列中的字符串中提取一组字符串,其中一行看起来像这样-

Type:MOBILE
Service:GSM
Pd to LOOK:
NOKIA/HMD;
APPLE;
MI;

Pd to SEE (swap):
SAMSUNG;
VIVO;

Pd to SEE (extra):
MOKA;

Contact me: 123456

我尝试获取一列的代码是 -

SELECT regexp_substr(myColumn, '\"Products to be CEASED:"([^"Products to be PROVIDED (swap):"]+)\}', 1,1,NULL,1) AS output FROM mytable

我需要一个可以在句子之间返回文本的查询 -

'Pd to LOOK:'和'Pd to SEE(交换):'

'Pd 到 SEE(交换):' 和 'Pd 到 SEE(额外):'

'Pd to SEE(额外):'和'联系我:123456'

例如-

Pd to LOOK:            Pd to SEE (swap):  Pd to SEE (extra):
NOKIA/HMD; APPLE; MI;  SAMSUNG;VIVO;      MOKA;

【问题讨论】:

    标签: oracle substring


    【解决方案1】:

    直接的解决方案是将 substr 函数与 instr 函数结合使用。如果列的数据类型是 LOB,则为 DBMS_LOB.instr 和 substr。

    documentation for dbms_lob.instr

    例如:

    select 
         substr(
           mycolumn,
           instr(mycolumn,'Pd to LOOK:'), --starting position
           instr(mycolumn,'Pd to SEE (swap):') - instr(mycolumn,'Pd to LOOK:'), --amount to get
           ) as "Pd to LOOK:"
         --, other expressions/columns
    from 
         my_table;
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2018-10-04
      • 1970-01-01
      • 2020-01-10
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多