Una forma de hacerlo es con REGEXP_REPLACE. Debe definir toda la cadena como un patrón de expresiones regulares y luego usar solo el elemento que desea como replace string
. En este ejemplo, ColorID es el tercer patrón en toda la cadena
SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
Es posible que haya soluciones de expresiones regulares menos torpes, pero esta definitivamente funciona. Aquí hay un SQL Fiddle.