sql >> Databasteknik >  >> RDS >> Oracle

Hitta N:te minimum av ett Varchar-värde i Oracle

Om du vill hitta det N:te värdet för någonting så kan den analytiska funktionen NTH_VALUE() är ett bra ställe att börja.

Om du antar att du bara vill ha detta baserat på den numeriska delen måste du byta ut allt som inte är ett nummer, för vilket du kan använda REGEXP_REPLACE()

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

För att få det N:te värdet för ett givet CONFIG_ID skulle det vara:

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

där n är indexet för det värde du vill returnera.



  1. Hur botar jag orsaken till viloläge undantag IllegalArgumentException inträffade när setter anropades?

  2. De 10 bästa anledningarna till varför du borde lära dig SQL

  3. Databasdesign för mycket stora mängder data

  4. Procedurer för Oracle i php med PDO