Hát, szerintem erre találták ki a PL/SQL-t, vélhetően extra programozás nélkül ezt csak SQL-ből nem tudod megoldani...
Alapvetően group és value szerint kellene group-ot képezni és a prefix-et sorba rendezni hossz szerint, majd az elsőt leszámítva törölni. Nem tűnik olyan komplexnek PL/SQL tárolt eljárásként.