加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用mysql split函数用法实例

发布时间:2020-12-12 03:06:18 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用mysql split函数用法实例》要点: 本文介绍了Mysql应用mysql split函数用法实例,希望对您有用。如果有疑问,可以联系我们。 导读:首先,大家要知道的是,在mysql中并没有split函数,需要自己写.比如下面几个mysql split函数的例子.例1,获得按指定

《Mysql应用mysql split函数用法实例》要点:
本文介绍了Mysql应用mysql split函数用法实例,希望对您有用。如果有疑问,可以联系我们。

导读:首先,大家要知道的是,在mysql中并没有split函数,需要自己写.比如下面几个mysql split函数的例子.例1,获得按指定字符分割的字符串的...

首先,需要自己写.MYSQL必读

比如下面几个mysql split函数的例子.
例1,获得按指定字符分割的字符串的个数:
?MYSQL必读

DELIMITER $$?
?
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 ;?

调用:
func_get_split_string_total('abc||def||gh','||')
结果为3?
?
例2,得到第i个分割后的字符串.
?MYSQL必读

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)
结果为def
?
例3,需求:A表中的一个字段值为1||2,在select 时要通过和B字典表的关联得到a,b
?MYSQL必读

CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8?
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接收返回值.
?MYSQL必读

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,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:
?MYSQL必读

DELIMITER $$;??
?
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;
1,函数func_splitStringTotal:将字符串按指定方式分割,并计算单元总数MYSQL必读

代码:
?MYSQL必读

DELIMITER $$
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:将字符串按指定方式分割,获取指定位置的数
代码:
?MYSQL必读

DELIMITER $$
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中
代码:
?MYSQL必读

DELIMITER $$
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 split函数,也欢迎分享更多的精彩实例.MYSQL必读

欢迎参与《Mysql应用mysql split函数用法实例》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读