sql >> Database >  >> RDS >> Oracle

Hoe een deel van de tekenreeks te krijgen die overeenkomt met de reguliere expressie in Oracle SQL?

Een manier om dit te doen is met REGEXP_REPLACE. Je moet de hele string definiëren als een regex-patroon en dan alleen het gewenste element gebruiken als de replace string . In dit voorbeeld is de ColorID het derde patroon in de hele string

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

Het is mogelijk dat er minder onhandige regex-oplossingen zijn, maar deze werkt zeker. Hier is een SQL Fiddle.



  1. MySQL localhost / 127.0.0.1 probleem

  2. Andere resultaatquery bij gebruik van mysql en mariadb

  3. MariaDB-tekenreeksen voor datumnotatie

  4. Oracle 10g:MIN/MAX kolomwaarde schatting