Uma maneira de fazer isso é com REGEXP_REPLACE. Você precisa definir a string inteira como um padrão regex e, em seguida, usar apenas o elemento que deseja como
replace string
. Neste exemplo o ColorID é o terceiro padrão em toda a string SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
É possível que existam soluções regex menos desajeitadas, mas esta definitivamente funciona. Aqui está um SQL Fiddle.