美文网首页
Mysql 字符串截取函数

Mysql 字符串截取函数

作者: 王滕辉 | 来源:发表于2021-11-09 14:21 被阅读0次

    字符串截取 字段中往往记录同一类型的多个数据,有时候需要挨个去进行计算,如何拆分出每一个数据是非常有用的,比如在存储过程中循环取很方便。

    CREATE DEFINER=`root`@`%` FUNCTION `StringSub`(str varchar(4000),sp1 varchar(100),sp2 varchar(1000)) RETURNS varchar(4000) CHARSET utf8mb4 COLLATE utf8mb4_general_ci
        DETERMINISTIC
    BEGIN
      #Routine body goes here...
        DECLARE index1 int;
        DECLARE index2 int;
        DECLARE length1 int;
        DECLARE length2 int;
        DECLARE str2 varchar(4000);
    
        if StringNULL(str) is null then 
            return null;
        end if;
        
    --  if sp1 is not null and sp2 is not null then
            set index1 = 1;
            set index2 = LENGTH(str);
            set length1 = 0;
            set length2 = 0;
            
            if StringNULL(sp2) is not null then 
                set length2 = CHAR_LENGTH(sp2);
            end if;
            if StringNULL(sp1) is not null then 
                set length1 = CHAR_LENGTH(sp1);
            end if;
            
            if StringNULL(sp2) is not null and locate(sp2,str) > 0 then
                set index1 = locate(sp2,str)+length2;
            end if;
            
            set str2 = SUBSTR(str ,index1,index2);
            if StringNULL(str2) is null then
                return null;
            end if;
            
            if StringNULL(sp1) is not null and  locate(sp1,str2) = 1 then
                set index1 = locate(sp2,str)+length2+length1;
            end if;
            set str2 = SUBSTR(str ,index1,index2);
            if StringNULL(str2) is null then
                return null;
            end if;
            
            if  locate(sp1,str2) > 1 then
                set index2 = locate(sp1,str2);
            end if;
    
            set str2 = SUBSTR(str2 ,1,index2-1);
            return StringNULL(str2);
    --  end if;
        
    
    END
    
    image.png

    相关文章

      网友评论

          本文标题:Mysql 字符串截取函数

          本文链接:https://www.haomeiwen.com/subject/gfwmzltx.html