oracle字符串截取函数
CREATE OR REPLACE FUNCTION fn_split1(p_str IN VARCHAR2, p_delimiter IN VARCHAR2,p_delimiter2 IN VARCHAR2) RETURN VARCHAR2 /******************************************* ***名称:fn_split1 ***参数:p_str 入参 p_delimiter p_delimiter2 ***author :by wuf 2013-06-01 ***描述:截取p_str中第一次出现p_delimiter和在p_delimiter出现之后第一次出现p_delimiter2的之间的字符串 ***如果在p_delimiter之后到字符串结束都没找到p_delimiter2串,则返回p_delimiter后所以的字符串 ***SELECT fn_split1("2@@12345,3@@,5@@134802308","@@","@@") FROM dual ;返回:12345,3 ********************************************/ IS j INT := 0; len INT := 0; len1 INT := 0; len2 INT := 0 ; str_split VARCHAR2(100) := ""; c VARCHAR2(100) ; BEGIN len := LENGTH (p_str); len1 := LENGTH (p_delimiter); len2 := LENGTH(p_delimiter2) ; j := INSTR(p_str,p_delimiter)+len1 ; IF j = len1 THEN RETURN NULL; END if ; IF j > len1 THEN c := SUBSTR(p_str,j,len2); IF c = p_delimiter2 THEN RETURN NULL; END if ; LOOP j := j + 1; c := SUBSTR(p_str,j,len2); IF c = p_delimiter2 THEN str_split := SUBSTR(p_str,INSTR(p_str,p_delimiter)+len1,j-INSTR(p_str,p_delimiter)-len1); EXIT; END IF ; IF j >= LEN THEN str_split := SUBSTR(p_str,INSTR(p_str,p_delimiter)+len1); EXIT; END IF; END LOOP ; END if ; RETURN str_split; END fn_split1;
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。