czwartek, 9 lutego 2012

regexp_count w Oracle 10g

Ponieważ w 10g Express Edition brakowało mi funkcji regexp_count postanowiłem napisać jej własną implementację która na tej wersji działa. A może komuś się jeszcze przyda:



create or replace package utils is
function regexp_count(x varchar2,wzorzec varchar2) return number;
end;

create or replace package body utils is
function regexp_count(x varchar2,wzorzec varchar2) return number
is
wystapienie number:=1;
pozycja number:=1;
begin
loop
pozycja:=regexp_instr(x,wzorzec,1,wystapienie);
exit when pozycja=0;
dbms_output.put_line('wystapienie: '||wystapienie||' na pozycji: '||pozycja);
wystapienie:=wystapienie+1;
end loop;
return wystapienie-1;
end;
end;


Tak wiem, że można to napisać lepiej. Mocno się jednak śpieszę a to przynajmniej działa :D