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
);