Eu usaria
REGEXP_SUBSTR
(documentação
), com expressões regulares à direita. Por exemplo:select regexp_substr('Chapter 18 Unit 10 Sect 16', 'Chapter \d*') from dual;
--Will return: Chapter 18
select regexp_substr('Chapter 18 Unit 10 Sect 16', 'Unit \d*') from dual;
--Will return: Unit 10
select regexp_substr('Chapter 18 Unit 10 Sect 16', 'Sect \d*') from dual;
--Will return: Sect 16
Claro que se você armazenar
Chapter xx Unit yy Sect zz
strings na tabela, então você simplesmente usa esse tipo de consulta para obter vários resultados:select regexp_substr(info_column, 'Chapter \d*') from mytable;
Você pode substituir
\d
com [0-9]
ou [[:digit:]]
SQLfiddle