如果我不知道它的结尾,在字段中获得文本片段是真的吗?我的文字带有片段,例如"类型工作:blablabla",需要得到它。片段的起点 - '类型工作:'
但长度不是恒定的,在此片段之后可能是其他文本不同的 - 不变的定界符;或者,或其他可以为我的片段提供终点的东西。
示例:
类型工作:Blablabla
开始:01-01-2019
需要获得
类型工作:Blablabla
或
类型工作:Blablabla
blablabla
sendornot:是
需要获得
类型工作:Blablabla
blablabla
我不是100%确定,但是以下查询可能是您需要的:
-- Sample data:
WITH dat(text) AS (SELECT 'type work: blablabla
start: 01-01-2019' FROM dual UNION ALL
SELECT 'type work: blablabla
blablablabla
sendornot:yes' FROM dual)
-- Query:
SELECT REGEXP_REPLACE(
-- Make sure text starts with 'type work:':
CASE WHEN INSTR(text, 'type work:') > 0 THEN SUBSTR(text, INSTR(text, 'type work:')) END
, '(type work:[^:]*)'||CHR(10)||'[^:'||CHR(10)||']*:.*$','1'
,1,1,'n') FROM dat
此查询第一个搜索:在type work
之后,并在此之前将所有行交易为键,然后从type work
获取文本直到该键。
如果您有一个键列表,则可能需要检查它们而不是[^:'||CHR(10)||']
:
SELECT REGEXP_REPLACE(
CASE WHEN INSTR(text, 'type work:') > 0 THEN SUBSTR(text, INSTR(text, 'type work:')) END
, '(type work:[^:]*)'||CHR(10)||'(start|sendornot):.*$','1'
,1,1,'n') FROM dat