PL/SQL verbeteringen in Oracel 10g - Regular Expressions
Oracle 10g ondertseund regular expressions in SQL en PL/SQL met de volgende functies:
  • REGEXP_INSTR - Vergelijkbaar aan INSTR behalve dat het als search string, een regular expression boven een literal verkiest.
  • REGEXP_LIKE - Vergelijkbaar aan LIKE behalve dat het een regular expression gebruikt als de search string.
  • REGEXP_REPLACE - Vergelijkbaar aan REPLACE behalve dat het een regular expression gebruikt als de search string.
  • REGEXP_SUBSTR - Geeft de string terug die overeenkomt met de regular expression. Niet echt gelijk aan SUBSTR.
De volgende voorbeelden laten zien hoe deze functies gebruikt kunnen worden met een eenvoudige regular expression ('[0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4}') voor standaard creditcard validatie:
SET SERVEROUTPUT ON
DECLARE
l_text VARCHAR2(100) := 'MIjn credit card details zijn: 1234 1234 1234 1234';
l_regular_expr VARCHAR2(50) := '[0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4}';

l_credit_card_1 VARCHAR2(50) := '1234 1234 1234 1234';
l_credit_card_2 VARCHAR2(50) := '123c 1234 1234 1234';
BEGIN
-- REGEXP_INSTR
IF REGEXP_INSTR(l_text, l_regular_expr) > 0 THEN
DBMS_OUTPUT.put_line('REGEXP_INSTR: Je input bevat credit card details, dit is een security risico!');
END IF;

-- REGEXP_LIKE
IF REGEXP_LIKE(l_credit_card_1, l_regular_expr) THEN
DBMS_OUTPUT.put_line('REGEXP_LIKE: Goede Credit Card: ' || l_credit_card_1);
END IF;
IF NOT REGEXP_LIKE(l_credit_card_2, l_regular_expr) THEN
DBMS_OUTPUT.put_line('REGEXP_LIKE: Slechte Credit Card : ' || l_credit_card_2);
END IF;

-- REGEXP_REPLACE
DBMS_OUTPUT.put_line('REGEXP_REPLACE: Before: ' || l_text);
DBMS_OUTPUT.put_line('REGEXP_REPLACE: After : ' || REGEXP_REPLACE(l_text, l_regular_expr, '**** **** **** ****'));

-- REGEXP_SUBSTR
DBMS_OUTPUT.put_line('REGEXP_SUBSTR: Matching String : ' || REGEXP_SUBSTR(l_text, l_regular_expr));
END;
/
Het bouwen van regular expressions die aan jouw behoeften voldoen kunnen iets verwarrend werken en is ook niet het uitgangspunt van dit artikel.
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 272 gasten online