Mysql应用mysql split函数用法实例
《Mysql应用mysql split函数用法实例》要点: 首先,需要自己写.MYSQL必读 比如下面几个mysql split函数的例子. ? DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$? ? CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(? f_string varchar(1000),f_delimiter varchar(5)? ) RETURNS int(11)? BEGIN? ? declare returnInt int(11);? ? if length(f_delimiter)=2? then? ???? return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;? ? else????? ???? return 1+(length(f_string) - length(replace(f_string,'')));? ? end if;? END$$? ? DELIMITER ;? 调用: ? DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$? ? CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(? f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8? BEGIN? ? declare result varchar(255) default '';? ? set result = reverse(substring_index(reverse(substring_index(f_string,f_order)),1));? ? return result;? END$$? ? DELIMITER ;? 调用:func_get_split_string('abc||def||gh','||',2) BEGIN??? ? DECLARE i int(4);? ? DECLARE dictCode varchar(100);? ? DECLARE dictName varchar(100);? ? DECLARE returnStr varchar(100);?? ? ? set i = 1;? ? set returnStr = '';??????? ??? ? if(v_str is null or length(v_str)=0) then? ?????? return returnStr;? ? else? ??? ? while i<=func_get_split_string_total(v_str,'||')? ? do? ???? set dictCode = func_get_split_string(v_str,i);??? ???? select names into dictName from sims_dd_dict where code = dictCode;??? ???? set returnStr = concat(returnStr,',dictName);? -- 这里要用中文的逗号,否则导出EXCEL的时候会串行,因为程序中是以逗号分隔的? ? set i = i+1;? ---//(脚本学堂 www.jbxue.com 编辑整理) ? end while;? ???? ? set returnStr = subString(returnStr,2);??? ? return returnStr;? ???? ? end if;? END$$? 在mysql数据库中使用split,有时要考虑接收返回值的问题,下面来看两个例子.MYSQL必读 例1,mysql使用split接收返回值. ? DROP FUNCTION IF EXISTS `func_getSplitCount`$$?? ? CREATE FUNCTION `func_getSplitCount`(?? ??? f_string varchar(1000),f_delimit varchar(5)?? ) RETURNS int(11)?? BEGIN? ??? return 1+(length(f_string) - length(replace(f_string,f_delimit,'')));?? END$$?? ? DELIMITER ;$$? DELIMITER $$;??? DROP FUNCTION IF EXISTS `func_getSplitCount`$$??? CREATE FUNCTION `func_getSplitCount`(?? f_string varchar(1000),f_delimit varchar(5)? ) RETURNS int(11)? BEGIN?? return 1+(length(f_string) - length(replace(f_string,'')));? END$$??? DELIMITER ;$$ 例2: ? DROP FUNCTION IF EXISTS `func_getSplitString`$$?? ? CREATE FUNCTION `func_getSplitString`(?? ??? f_string varchar(1000),f_delimit varchar(5),f_order int? ) RETURNS varchar(255)?? BEGIN? ? declare result varchar(255) default '';?? ? set result = reverse(substring_index(reverse(substring_index(f_string,1));?? ? return result;?? END$$?? ? DELIMITER ;$$? DELIMITER $$;??? DROP FUNCTION IF EXISTS `func_getSplitString`$$??? CREATE FUNCTION `func_getSplitString`(?? f_string varchar(1000),f_order int? ) RETURNS varchar(255)? BEGIN??? declare result varchar(255) default '';??? set result = reverse(substring_index(reverse(substring_index(f_string,1));??? return result;? END$$??? DELIMITER ;$$ 参考文档:mysql实现字符串分割SPLIT函数的四种办法MYSQL必读 最后,通过几个例子,仔细体会下mysql中split函数的实现与用法.MYSQL必读 先设置:SET GLOBAL log_bin_trust_function_creators = 1; 代码: CREATE FUNCTION `func_get_splitStringTotal`( f_string varchar(10000),f_delimiter varchar(50) ) RETURNS int(11) BEGIN return 1+(length(f_string) - length(replace(f_string,''))); END$$ DELIMITER ; 2,函数func_splitString:将字符串按指定方式分割,获取指定位置的数 DROP function IF EXISTS `func_splitString` $$ CREATE FUNCTION `func_splitString` ( f_string varchar(1000),f_order int) RETURNS varchar(255) CHARSET utf8 BEGIN declare result varchar(255) default ''; set result = reverse(substring_index(reverse(substring_index(f_string,1)); return result; END$$ SELECT func_splitString('1,2,3,4,5,6,7',1); 3,过程splitString 将字符串分割,并放到临时表tmp_split中 DROP PROCEDURE IF EXISTS `splitString` $$ CREATE PROCEDURE `splitString` (IN f_string varchar(1000),IN f_delimiter varchar(5)) BEGIN declare cnt int default 0; declare i int default 0; set cnt = func_split_TotalLength(f_string,f_delimiter); DROP TABLE IF EXISTS `tmp_split`; create temporary table `tmp_split` (`val_` varchar(128) not null) DEFAULT CHARSET=utf8; while i < cnt do set i = i + 1; insert into tmp_split(`val_`) values (func_split(f_string,i)); end while; END$$ call splitString('a,s,d,f,g,h,j','); SELECT * from tmp_split; 更多有关mysql split函数的用法,请参考:在mysql中实现split函数的几种办法 . 欢迎参与《Mysql应用mysql split函数用法实例》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |