Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere parte della stringa corrispondente all'espressione regolare in Oracle SQL

Un modo per farlo è con REGEXP_REPLACE. Devi definire l'intera stringa come un modello regex e quindi utilizzare solo l'elemento che desideri come replace string . In questo esempio il ColorID è il terzo modello nell'intera stringa

SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
                         , '(.*)(color\=)([^;]+);?(.*)'
                         , '\3') "colorID"  
FROM DUAL;  

È possibile che ci siano soluzioni regex meno ingombranti, ma questa funziona sicuramente. Ecco un SQL Fiddle.