使用Regexp_substr显示特定文本

时间:2017-12-14 12:19:38

标签: sql oracle oracle11g

我有一个名为keys的列,其格式为以下格式:

  

QWERT! B1 12345! B3 abcde! B4 fgh14777
  STAT! B3 3456! C0 224466! B2 bbmm

我试图使用regexp_substr只显示以B3开头并以下一个感叹号前的字符结尾的文字(!)
所以我想要的结果就是这样:
B3 abcde
B3 3456

B3可能位于字符串中的任何位置,文本的长度也可能不同。并非每一行都包含B3。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

这是一个非常简单的正则表达式:

select regexp_substr('qwert! B1 12345! B3 abcde! B4 fgh14777', 'B3[^!]+', 1, 1)
from dual