Domanda

Suppose I have table with Column as below:

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

I need Output to be

Case 1:

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

Case 2:

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

How can I do this with a select in Oracle 11g/10g/9i?

È stato utile?

Soluzione

You could use regular expression.
case1 '.+' a greedy match for anything between first and last occurrence of 'Queen'
case2 '.+?' a reluctant match for anything between first and following occurrance of 'Queen'

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
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top