我正在尝试从存储在名为“ 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到LOOK:”和“ Pd到SEE(交换):”
“将Pd转换为SEE(交换):”和“将Pd转换为SEE(额外):”
“将Pd转换为SEE(额外):”和“与我联系:123456”
例如-
Pd to LOOK: Pd to SEE (swap): Pd to SEE (extra):
NOKIA/HMD; APPLE; MI; SAMSUNG;VIVO; MOKA;
答案 0 :(得分:2)
一个直接的解决方案是将substr函数与instr函数结合使用。或DBMS_LOB.instr和substr(如果该列的数据类型是LOB)。
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;