MySQL自定义函数获取字符串

需求:获取由分隔符组成的字符串中第n个子字符串

实现:在MySQL中编写函数进行实现

以下为具体的函数代码:

DROP FUNCTION IF EXISTS f_get_strofindex;

CREATE FUNCTION f_get_strofindex(

str VARCHAR(1024),

split VARCHAR(10),

indexOf INT

)

RETURNS VARCHAR(1024)

BEGIN

/*******************************

    *名称 --%NAME: 获取指定字符串

    *功能描述 --%COMMENT: f_get_strofindex('i,hello,word',',',2) 获得的是 hello

    *执行周期 --%PERIOD: 随时调用

     *参数1 --%str: 需要分割的字符串

    *参数1 --%split: 分隔符号

    *参数1 --%indexOf: 取第几个元素

    *备注 --%REMARK:

*******************************/

DECLARE location INT DEFAULT 0; --

DECLARE frontOf text; -- 第n-1个元素获取的字符串

DECLARE nextOf text ; -- 第n个元素获取的字符串

DECLARE splitLen INT ; -- 分隔符长度

DECLARE seed INT ; -- 分隔符个数

SET str=ltrim(rtrim(str)) ; -- 去掉字符串前后空格

SET frontOf = concat(substring_index(str,split,indexOf - 1 ),split) ;

SET nextOf=substring_index(str,split,indexOf) ;

SET splitLen=LENGTH(split);

SET seed=FLOOR((length(str)-length(replace(str,split,'')))/LENGTH(split)); -- 计算分隔符个数

IF indexOf = 1 THEN

    RETURN  substring_index(str,split,1);

ELSEIF indexOf = seed+1 THEN

    RETURN  substring_index(str,split,-1);

ELSEIF indexOf > seed+1 THEN

   RETURN '';

ELSE

    RETURN REPLACE(nextOf,frontOf,'');

END IF;

END ;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Javascript有很多字符串的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,...
    顽皮的雪狐七七阅读 6,662评论 0 2
  • Author:杜七 Date:2017.03.15 字符串截取 MySQL 字符串截取函数:left(), rig...
    杜七阅读 3,818评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,145评论 18 399
  • 转载自这里 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Sto...
    杜七阅读 6,988评论 4 27
  • 昵称:洲木 日期/星期几/天气:2017.06.19/周一/雨 今日阅读时长或页数:40 min 本周阅读时间:未...
    1megawatt阅读 1,527评论 0 0