使用PL SQL 编写一个逗号分割字符串分割处理函数

来源:互联网 发布:iphone 拍电影软件 编辑:程序博客网 时间:2024/05/19 10:55
create or replace function F_INTELLECT_FIRST_SALES_PROV(var_sales in varchar2,       var_first_sales IN VARCHAR2,        var_split in VARCHAR2) return varchar2 is  Result varchar2(1);    /****************************************************  ** 
  ** All rights reserved.  **  ** 函数名称:F_INTELLECT_FIRST_SALES_PROVINCE  ** 参    数:【名称】         【类型 】      【说明】  **           var_sales          varchar2       字符串1,逗号分隔的,如'aaa,bbb'               var_first_sales    varchar2       字符串2,逗号分割的,如'cc,aaa'  **           var_split        varchar2       要使用的分隔符  ** 返 回 值:Result           varchar2    处理后返回的值1/0  ** 摘    要:如果字符串2中的某一个分割的字符串在字符串1中就返回1,否则返回0                 **  ** 当前版本:1.0  **  ** 作    者:liuzhih  ** 完成日期:2013年1月29日  ** 备    注:  ****************************************************/  var_element varchar2(4000);  var_element2 varchar2(4000);  var_tmp     varchar2(4000);  var_tmp2    varchar2(4000);  BEGIN     RESULT := '0';     var_tmp := var_sales;     var_tmp2 := var_first_sales;       IF var_tmp2 IS NULL OR var_tmp2 ='' THEN    return(Result);  ELSIF var_tmp IS NULL OR var_tmp ='' THEN    return(Result);  ELSE    /*如果字符串1不为空,在后面加上一个特殊的字符,    这样循环时就可以直接在循环内部处理,不然需要在最外面循环出再一次处理var_tmp,因为最后一次var_tmp中不含有分隔符,不会进行loop循环*/    var_tmp := var_tmp || var_split || '-1';  END IF;     while instr(var_tmp, var_split) > 0 LOOP     /****循环字符串1,每次获得一个var_element****/     var_element := substr(var_tmp, 1, instr(var_tmp, var_split) - 1);      var_tmp     := substr(var_tmp,                          instr(var_tmp, var_split) + length(var_split),                          length(var_tmp));             while instr(var_tmp2, var_split) > 0 LOOP          /****循环字符串2,每次获得一个var_element2****/         var_element2 := substr(var_tmp2, 1, instr(var_tmp2, var_split) - 1);          var_tmp2     := substr(var_tmp2,                              instr(var_tmp2, var_split) + length(var_split),                              length(var_tmp2));           /*如果字符串1中有字符串2中的一个值,返回1*/           IF var_element = var_element2 THEN             RESULT := '1';             return(Result);           END IF;        END LOOP;                /*最后一个截取的var_tmp2 不会进入循环 所以在此处处理                                  如果字符串1中含有字符串2的一个值,返回1*/           IF var_element = var_tmp2 THEN             RESULT := '1';             return(Result);           END IF;        END LOOP;  return(Result);end F_INTELLECT_FIRST_SALES_PROV;

原创粉丝点击