Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter parte da string que corresponde à expressão regular no Oracle SQL


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.