sql >> Base de Datos >  >> RDS >> Oracle

Cómo obtener parte de la cadena que coincidió con la expresión regular en Oracle SQL

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.