组合
create or replace function collocate(m number, n number) return number is
--C(n,m)=n!/(n-m)!*m!
v_result number;
begin
if m > n then
return 0;
end if;
if m = 0 then
return 1;
end if;
v_result := factorial(n) / (factorial(n - m) * factorial(m));
return v_result;
end;
求阶
CREATE OR REPLACE FUNCTION factorial(var NUMBER) RETURN NUMBER IS
res NUMBER := 1;
BEGIN
IF var < 0 THEN
RETURN 0;
elsif var=0 then
return 1;
END IF;
FOR i IN 1 .. var LOOP
res := i * res;
END LOOP;
RETURN res;
END;
select factorial(3) from dual;
select collocate(0,4) from dual;
字符匹配个数
CREATE OR REPLACE FUNCTION numsofchar(var1 VARCHAR2, var2 VARCHAR2) RETURN NUMBER IS
--i number :=1
len NUMBER := length(var1);
nums NUMBER := 0;
c CHAR(1);
BEGIN
if var1 is null or var2 is null then
return 0;
end if;
FOR i IN 1 .. len LOOP
c := substr(var1, i, 1);
IF instr(var2, c) > 0 THEN
nums := nums + 1;
END IF;
END LOOP;
RETURN nums;
END;