Une façon de le faire est avec REGEXP_REPLACE. Vous devez définir la chaîne entière en tant que modèle regex, puis utiliser uniquement l'élément souhaité comme replace string
. Dans cet exemple, le ColorID est le troisième motif de toute la chaîne
SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
Il est possible qu'il y ait des solutions regex moins maladroites, mais celle-ci fonctionne définitivement. Voici un SQL Fiddle.