- Oracle heeft 4 functies om te werken met Reguliere Expressies
- Bij onderstaande voorbeelden worden Reguliere Expressies alleen gebruikt om te filteren in een WHERE clausule
- Het filteren in een WHERE clausule kan met de REGEXP_LIKE( ) functie
SELECT prod_name
FROM Products
WHERE REGEXP_LIKE(prod_name, '.2');
| PROD_NAME |
| 12 inch teddy bear |
Bovenstaande voorbeeld kan ook uitgevoerd worden met alleen het LIKE Keyword maar dan moet er wel met 'meerdere' Wildcards gewerkt worden.
- De punt in een reguliere expressie staat voor: één willekeurig karakter
- Het zoeken naar patronen met reguliere expressies in Oracle is hoofdletter gevoelig
- Gebruik de Pipe als OR conditie
SELECT prod_name
FROM Products
WHERE REGEXP_LIKE(prod_name, '8 | 12 | 18');
| PROD_NAME |
| 8 inch teddy bear |
| 18 inch teddy bear |
- Naast de Punt voor één karakter kun je tussen [ ] ook een set specifieke karakters opgeven
- [ ] is een andere vorm van het OR statement
SELECT prod_name
FROM Products
WHERE REGEXP_LIKE(prod_name, '[128] inch');
| PROD_NAME |
| 8 inch teddy bear |
| 12 inch teddy bear |
| 18 inch teddy bear |
Bovenstaande functie is de verkorte notatie van [ 1 | 2 | 8 ]
- Als je bij een set het ^ karakter toevoegd wordt de set negatief
SELECT prod_name
FROM Products
WHERE REGEXP_LIKE(prod_name, '[^12] inch');
- Sets [ ] kunnen gebruikt worden om meerdere karakters te zoeken
- De set [1234567890] zoekt alle strings met nummers erin. Dit kan ook verkort worden met [0-9]
- De volgende sets mogen ook; [6-9], [a-m]
SELECT prod_name
FROM Products
WHERE REGEXP_LIKE(prod_name, '[1-8] inch');
- Reguliere Expressie taal maakt gebruik van speciale karakters zoals; . | [ ] ^ -
- Als je zoekt naar patronen die special karakters bevatten dan moet je het escape karakter \ gebruiken
- Het escape karakter \ plaats je voor het speciale karakter
SELECT cust_contact
FROM Customers
WHERE REGEXP_LIKE(cust_contact, '\.');
- Het werken met set van karakters is heel gebruikelijk bij reguliere expressies
- Om het werken met bepaalde karaktersets eenvoudiger te maken zijn er voorgedefinieerde sets
- Voorgedefinieerde sets met karakters noemen we 'Character Classes'