1

假设我有如下表的列:

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

案例二:

TEXT
-----
Queen Jack King Queen
Queen Ace Jack Queen
Queen Ace Queen

如何使用 Oracle 11g/10g/9i 中的选择来执行此操作?

4

1 回答 1

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
);
于 2013-11-11T10:06:04.323 回答