MySQL - 自定义函数-剔除数组中重复值

/*

创建人:DZH

创建日期:20xx-xx

函数作用:剔除数组中重复值

*/

DROP FUNCTION IF EXISTS fun_str_split;
CREATE FUNCTION fun_str_split(str1 varchar(255), str_splie char(2)) RETURNS VARCHAR(255)
BEGIN
    declare re_str0 varchar(255);
    declare re_str1 varchar(255);
    declare i int;
    declare j int;
    declare k int;
    -- 获取特殊出现总次数
    set k=length(str1)-length(replace(str1,str_splie,''));
    -- 初始化返回值
    set re_str0='';
    -- 对字符串判断处理
    if length(str1)=0 then
       set re_str0='';
    elseif k=0 then         
       set re_str0=str1;
    else
       set i=k+1;
       while i>0
       do
          set i=i-1;
          set j=instr(str1,str_splie);
          if j=0 then     
             -- j=0 是最后一个元素时没有特殊字符
             set re_str0=concat_ws(str_splie,re_str0,str1);
          else
              set re_str1=substr(str1,1,j-1);
              set str1=substr(str1,j+1);
              -- 判断是否存在
              if  find_in_set(re_str1,re_str0)='' then
                  set re_str0=concat_ws(str_splie,re_str0,re_str1);
              end if;                    
          end if;
          -- 清空下个循环重新赋值
          set j=0;
          set re_str1='';
       end while;    
    end if;
    -- 剔除前后可能出现的特殊字符
    set re_str0=trim(both str_splie from re_str0);
    RETURN re_str0;
END;

/*

创建人:DZH

创建日期:20XX-XX

函数作用:剔除数组个数

*/

DROP FUNCTION IF EXISTS fun_str_split_cunt;
CREATE FUNCTION fun_str_split_cunt(str1 varchar(255), str_splie char(2)) RETURNS int
BEGIN
    declare re_str0 varchar(255);
    declare i int;


    -- 调用fun_str_split 处理异常重复内容
    set re_str0=fun_str_split(str1,str_splie);
    -- 获取特殊出现总次数
    set i=length(re_str0)-length(replace(re_str0,str_splie,''))+1;
    RETURN i;
END;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值