Een manier om dit te doen is met REGEXP_REPLACE. Je moet de hele string definiëren als een regex-patroon en dan alleen het gewenste element gebruiken als de replace string
. In dit voorbeeld is de ColorID het derde patroon in de hele string
SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
Het is mogelijk dat er minder onhandige regex-oplossingen zijn, maar deze werkt zeker. Hier is een SQL Fiddle.