DECLARE l_256 VARCHAR2(100) := '([1-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6])'; l_regular_expr VARCHAR2(500) := '^([ ]{1,2}|)'||l_256||'\.([ ]|)'||l_256||'\.([ ]|)'||l_256||'\.([ ]|)'||l_256; TYPE list_type IS VARRAY(10) OF VARCHAR2(20); v_list LIST_TYPE := LIST_TYPE(); BEGIN v_list.EXTEND(10); -- v_list(1) := '123.123.123.123'; v_list(1) := '&IP-Adresse'; -- REGEXP_LIKE ANWEISUNG -- --------------------------- FOR i IN 1..v_list.LAST LOOP IF REGEXP_LIKE(v_list(i), l_regular_expr) THEN DBMS_OUTPUT.put_line('OK IP Address : ' || v_list(i)); END IF; IF NOT REGEXP_LIKE(v_list(i), l_regular_expr) THEN DBMS_OUTPUT.put_line('BBoese IP Address: ' || v_list(i)); END IF; END LOOP; END; /
Oder per SQL-Abfrage
select * from ip_table where regexp_like(ip, '^([1-9]{1}|[0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([1-9]{1}|[0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([1-9]{1}|[0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([1-9]{1}|[0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$')