Oracle
 sql >> Database >  >> RDS >> Oracle

Come selezionare la sottostringa in Oracle?

Userei REGEXP_SUBSTR (documentazione ), con le giuste espressioni regolari. Ad esempio:

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

Ovviamente se memorizzi Chapter xx Unit yy Sect zz stringhe nella tabella, quindi usi semplicemente questo tipo di query per ottenere più risultati:

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

Puoi sostituire \d con [0-9] o [[:digit:]]

SQLfiddle