Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment sélectionner une sous-chaîne dans Oracle?

J'utiliserais REGEXP_SUBSTR (documentation ), avec des expressions régulières à droite. Par exemple :

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

Bien sûr si vous stockez Chapter xx Unit yy Sect zz chaînes dans le tableau, vous utilisez simplement ce type de requête pour obtenir plusieurs résultats :

select regexp_substr(info_column, 'Chapter \d*') from mytable;

Vous pouvez remplacer \d avec [0-9] ou [[:digit:]]

SQLfiddle