Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir une partie de la chaîne correspondant à une expression régulière dans Oracle SQL

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.