自定义实现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