Un modo per farlo è con REGEXP_REPLACE. Devi definire l'intera stringa come un modello regex e quindi utilizzare solo l'elemento che desideri come replace string
. In questo esempio il ColorID è il terzo modello nell'intera stringa
SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
È possibile che ci siano soluzioni regex meno ingombranti, ma questa funziona sicuramente. Ecco un SQL Fiddle.