mysql 中自定义实现split功能的函数

自定义实现split功能的函数

项目中处理数据,需要用到根据指定字符分割字符串并记录的功能。

参考其他资料实现的功能

/**
主要功能,是实现类似sql里面的指定字符分割给定的字段,
分割的结果,存入另一个新表中。一般是存入当前表id,和分割后的一对多内容
**/

DROP FUNCTION IF EXISTS split;
delimiter $$    
CREATE FUNCTION split(id int, f_string text,f_delimiter varchar(100)) RETURNS text

BEGIN
    DECLARE i int(11);
    DECLARE total int(11);
    DECLARE result text;
    DECLARE resulttemp text;
    SET i=1;
    SET result = '';
    set resulttemp = '' ;

--不错的方法记录,字段中存在字符的个数,只限分隔符为1的情况
    set total = 1+(LENGTH(f_string)-LENGTH(replace(f_string,f_delimiter,'')));

    IF(f_string is NULL or LENGTH(f_string)=0) THEN
        RETURN '无内容';
    ELSE
        WHILE i<=total DO
                set resulttemp = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_string,f_delimiter,i)),f_delimiter,1));
                IF(LENGTH(result)=0) THEN
                    set result = CONCAT(result,SUBSTRING_INDEX(resulttemp,f_delimiter,-1));
                ELSE
                    set result = CONCAT(CONCAT(result,f_delimiter),SUBSTRING_INDEX(resulttemp,f_delimiter,-1));
                END IF;
--记录存入另一种新表
                INSERT INTO test_physical_position (ch_id,content) VALUES (id,SUBSTRING_INDEX(resulttemp,f_delimiter,-1));  
                set i = i+1;
        END WHILE;
    END IF;
    RETURN result;
END

$$
delimiter; 

SELECT id,split(id,字段信息,分隔符) FROM 需要分割字段存在的表名;

参考链接: http://www.cnblogs.com/bojuetech/p/6202542.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值