MySQL自定义函数获取字符串

2017-06-30  本文已影响81人  加来依蓝

需求:获取由分隔符组成的字符串中第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 ;

上一篇 下一篇

猜你喜欢

热点阅读