浏览 2979 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-03
RETURN VARCHAR2 IS v_result VARCHAR2(200); v_length INTEGER; v_start_point INTEGER; v_number INTEGER; v_temp varchar2(200); t_num INTEGER; /****************************************************************************** 根据设定的分界符,截取字符串中出现的第几个分界符后指定长度的字符串内容 输入参数: p_expression varchar2 被截取的字符串、 p_split_flag varchar2 分界符、 p_length INTEGER 截取的字符串长度、 p_start_point INTEGER 开始位置 p_number INTEGER 从开始位置开始出现的第几个分界符 返回结果: v_result varchar2 返回结果,截取出字符串 注意点: 1、被截取的字符串不能为空 2、分解符可以为空格 3、截取长度和第几个分解符需要给出值,默认为1 4、开始位置默认为空 -------------------------------------------------------------------------------- Version 1.0 Created By Pracy.Chen 2011-11-02 Mail:pracy87@163.com *******************************************************************************/ BEGIN t_num :=0; v_length :=0; v_start_point :=0; v_number :=0; --处理参数 IF trim(p_expression) is null THEN v_result:=''; RETURN v_result; END IF; IF p_length is null OR p_length = 0 THEN v_length:= 1; ELSE v_length:=p_length; END IF; IF p_number is null OR p_number = 0 THEN v_number:= 1; ELSE v_number:=p_number; END IF; IF p_split_flag = p_expression OR p_split_flag is null THEN v_result:= p_expression; RETURN v_result; END IF; IF p_start_point is null THEN v_start_point:= 1; ELSE v_start_point:=p_start_point; END IF; select instr(p_expression,p_split_flag,v_start_point,v_number) into t_num from dual; IF t_num = 0 THEN v_result := ''; RETURN v_result; END IF; select substr(p_expression,t_num+1,v_length) into v_temp from dual; IF trim(v_temp)is null THEN v_result:=' '; ELSE v_result:=v_temp; END IF; RETURN v_result; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN ' '; WHEN OTHERS THEN -- Consider logging the error and then re-raise return ' '; END split_string; / 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |