计算字符在字符串中出现的次数

1、 通过lengthb和replace函数巧妙结合的自定义函数获取

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;
/

2、 通过for循环自定义函数

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;
/

3、 总结

方法一比较巧妙,也可以不生成函数,直接lengthb结合replace直接select获取;方法二为传统思维。
 

你可能感兴趣的:(CSDN/nsj820迁移,Oracle,数据库,取数方法,函数,oracle)