在oracle中使用正则表达式提取段落中的单词

时间:2019-05-10 20:06:51

标签: sql oracle

我有一个段落,我需要从中提取一个词。

Attention:
Investigator: O'Toole, Tim  
Suspect Name:
Ezekiel, David

Account Number:
4323232

所需的输出:

Ezekiel, David

我尝试过的事情:

regexp_extract([Case_Desc],'Name : (.+)Account')

以上正则表达式在tableau中有效,但由于某些原因,Toad for Oracle不支持此功能。对此,我们将给予任何帮助。预先感谢。

2 个答案:

答案 0 :(得分:1)

一个选择是将regexp_substr()ltrim()一起使用

with t(str) as
(
 select 'Attention:
Investigator: O''Toole, Tim  
Suspect Name:
Ezekiel, David

Account Number:
4323232' from dual 
)
select ltrim(regexp_substr(str,'\e:[^\Account]+'),'e:') as "Result String" 
  from t;

Result String
---------------
Ezekiel, David

Demo

顺便说一句,Oracle中没有称为regexp_extract()的函数。

答案 1 :(得分:1)

使用SUBSTR + INSTR组合的选项,该选项选择写在“可疑名称:”和“帐号”之间的值(注意字母大小写;如果不同,则应用{{1 }}或lower函数可能有帮助)。

upper