- CREATE OR REPLACE FUNCTION STR_CNT_NISJ(MOTHER_CHAR VARCHAR2, SUB_CHAR VARCHAR2) RETURN NUMBER IS
- V_NUM NUMBER := 0;
- BEGIN
- SELECT (LENGTHB(MOTHER_CHAR) - LENGTHB(REPLACE(MOTHER_CHAR, SUB_CHAR, ''))) / LENGTHB(SUB_CHAR)
- INTO V_NUM
- FROM DUAL;
- RETURN V_NUM;
- END;
- /
- CREATE OR REPLACE FUNCTION STR_CNT(MOTHER_CHAR VARCHAR2,SUB_CHAR VARCHAR2)
- RETURN NUMBER
- IS
- V_NUM NUMBER(10):=0;
- BEGIN
- FOR I IN 1..LENGTH(MOTHER_CHAR) LOOP
- IF INSTR(MOTHER_CHAR,SUB_CHAR,1,I)>0 THEN
- V_NUM:=V_NUM+1;
- ELSE
- RETURN V_NUM;
- END IF;
- END LOOP;
- RETURN V_NUM;
- END;
- /
方法一比较巧妙,也可以不生成函数,直接lengthb结合replace直接select获取;方法二为传统思维。