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

Oracle SQL ottiene l'ennesimo elemento regexp

Se i tuoi valori delimitati sono sempre alfanumerici tra le virgole, puoi provare:

SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, 7 )
  FROM dual;

Per ottenere il settimo valore (compresa la virgola finale). Se è vuoto ottieni solo la virgola finale (che puoi rimuovere facilmente).

Ovviamente, se vuoi un valore diverso dal settimo, cambia il valore del quarto parametro con l'ennesima occorrenza che vuoi ad es.

SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, <nth occurance> )
  FROM dual;

EDIT:poiché amo REGEX, ecco una soluzione che rimuove anche la virgola finale

SELECT REPLACE(
          REGEXP_SUBSTR(<delimied_string>, '[[:alnum:]]{0,},', 1, <nth>), 
          ','
       )
  FROM dual;

spero che ti aiuti