假设我的表格如下所示:
TEXT
-----
King Queen Jack King Queen
King Jack Queen Ace Jack Queen King
Queen Ace Queen King Queen Jack
我需要输出
案例1:
TEXT
-----
Queen Jack King Queen
Queen Ace Jack Queen
Queen Ace Queen King Queen
案例2:
TEXT
-----
Queen Jack King Queen
Queen Ace Jack Queen
Queen Ace Queen
如何使用Oracle 11g / 10g / 9i中的select进行此操作?
答案 0 :(得分:4)
您可以使用正则表达式。
case1'。+'在'Queen'的第一次和最后一次出现之间的任何事情的贪婪匹配
case2'。+?'在'女王'的第一次和后续发生之间的任何事情都不情愿地匹配
select
regexp_substr( myColumn, 'Queen.+Queen' ) as Case1
, regexp_substr( myColumn, 'Queen.+?Queen' ) as Case2
from (
select 'King Queen Jack King Queen' as myColumn
from dual
union all
select 'King Jack Queen Ace Jack Queen King' as myColumn
from dual
union all
select 'Queen Ace Queen King Queen Jack' as myColumn
from dual
);