sql >> Base de Datos >  >> RDS >> Oracle

Encontrar el enésimo mínimo de un valor Varchar en Oracle

Si desea encontrar el valor N de algo, entonces la función analítica NTH_VALUE() es un buen lugar para comenzar.

Suponiendo que desea esto basado en la parte numérica, solo debe reemplazar todo lo que no sea un número, para lo cual puede usar REGEXP_REPLACE()

select regexp_replace(escalation_level, '[^[:digit:]]')
  from my_table

Para obtener el valor N para un CONFIG_ID dado sería:

select nth_value(escalation_level, n)
         over ( partition by config_id 
                    order by regexp_replace(escalation_level, '[^[:digit:]]') )
  from my_table

donde n es el índice del valor que desea devolver.