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

Encontrando o enésimo mínimo de um valor Varchar no Oracle


Se você quiser encontrar o enésimo valor de qualquer coisa, a função analítica NTH_VALUE() é um bom lugar para começar.

Supondo que você queira isso com base apenas na parte numérica, você precisa substituir tudo o que não é um número, para o qual você pode usar REGEXP_REPLACE()
select regexp_replace(escalation_level, '[^[:digit:]]')
  from my_table

Para obter o enésimo valor para um determinado CONFIG_ID seria:
select nth_value(escalation_level, n)
         over ( partition by config_id 
                    order by regexp_replace(escalation_level, '[^[:digit:]]') )
  from my_table

onde n é o índice do valor que você deseja retornar.