Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle SQL obtendo o enésimo elemento regexp


Se seus valores delimitados são sempre alfanuméricos entre as vírgulas, você pode tentar:
SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, 7 )
  FROM dual;

Para obter o sétimo valor (incluindo a vírgula à direita). Se estiver vazio, você obtém apenas a vírgula à direita (que você pode remover facilmente).

Obviamente, se você quiser um valor diferente do sétimo, altere o valor do quarto parâmetro para a enésima ocorrência desejada, por exemplo.
SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, <nth occurance> )
  FROM dual;

EDIT:Como eu amo REGEX, aqui está uma solução que também remove a vírgula à direita
SELECT REPLACE(
          REGEXP_SUBSTR(<delimied_string>, '[[:alnum:]]{0,},', 1, <nth>), 
          ','
       )
  FROM dual;

espero que ajude