oracle字符串截取函数

1.函数源码如下:

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;

2.使用见函数体中注释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值