首先,大家要知道的是,在mysql中并没有split函数,需要自己写。

比如下面几个mysql split函数的例子。

例1,获得按指定字符分割的字符串的个数:

复制代码 代码示例:

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,f_delimiter,'')));

end if;

END$$

DELIMITER ;

调用:

func_get_split_string_total('abc||def||gh','||')

结果为3

例2,得到第i个分割后的字符串。

复制代码 代码示例:

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_delimiter,f_order)),f_delimiter,1));

return result;

END$$

DELIMITER ;

调用:func_get_split_string('abc||def||gh','||',2)

结果为def

例3,需求:A表中的一个字段值为1||2, 在select 时要通过和B字典表的关联得到a,b

复制代码 代码示例:

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,有时要考虑接收返回值的问题,下面来看两个例子。

例1,mysql使用split接收返回值。

复制代码 代码示例:

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,f_delimit,'')));  END$$    DELIMITER ;$$

例2:

复制代码 代码示例:

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,f_delimit,f_order)),f_delimit,1));

return result;

END$$

DELIMITER ;$$

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,f_delimit,f_order)),f_delimit,1));    return result;  END$$    DELIMITER ;$$

参考文档:mysql实现字符串分割SPLIT函数的四种方法

最后,通过几个例子,仔细体会下mysql中split函数的实现与用法。

先设置:SET GLOBAL log_bin_trust_function_creators = 1;

1,函数func_splitStringTotal:将字符串按指定方式分割,并计算单元总数

代码:

复制代码 代码示例:

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,f_delimiter,'')));

END$$

DELIMITER ;

2,函数func_splitString:将字符串按指定方式分割,获取指定位置的数

代码:

复制代码 代码示例:

DELIMITER $$

DROP function IF EXISTS `func_splitString` $$

CREATE FUNCTION `func_splitString`

( 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_delimiter,f_order)),f_delimiter,1));

return result;

END$$

SELECT func_splitString('1,2,3,4,5,6,7',',',1);

3,过程splitString 将字符串分割,并放到临时表tmp_split中

代码:

复制代码 代码示例:

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,f_delimiter,i));

end while;

END$$

call splitString('a,s,d,f,g,h,j',',');

SELECT * from tmp_split;

更多有关mysql split函数的用法,请参考:在mysql中实现split函数的几种方法 。

就介绍这些吧,希望借助以上的例子,大家可以实现更好的mysql split函数,也欢迎分享更多的精彩实例。

split mysql的用法_mysql split函数用法实例相关推荐

  1. mysql group_concat去重_MySQL group_concat() 函数用法

    MySQL group_concat() 函数用法 在使用 group by对数据进行分组后,如果需要对 select 的数据项进行字符串拼接,这时就需要用到group_concat()函数. 1.基 ...

  2. mysql substr无效_mysql substr()函数用法

    一.用法: substr(string string,num start,num length); string:为字符串: start:为起始位置: length:为长度. 二.区别: mysql中 ...

  3. mysql coalesce函数用法_MySQL coalesce函数用法说明(转)

    在mysql中,其实有不少方法和函数是很有用的,一个叫coalesce的,作用是将返回传入的参数中第一个非null的值,比如 SELECT COALESCE(NULL, NULL, 1); -- Re ...

  4. mysql 字符串截取_MySQL|SUBSTR() 函数用法

    MySQL SUBSTR() 函数 :截取字符串 SUBSTR( )与SUBSTRING( )意思相等 函数语法 SUBSTR (str, pos) 截取从pos位置开始到最后的所有str字符串 SU ...

  5. Mysql中rank类的函数用法

    Mysql中rank类的函数用法 rank() over 作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续. 说明:例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占 ...

  6. Compound Words UVA - 10391(c++用法中substr函数用法+map实现)

    题意: 给出字典中一堆单词,单词的输入方式是以字典序输入的.问:在这一堆单词中,有那些单词是通过其它两个单词组合而来的.按字典序升序输出这些单词. 题目: You are to find all th ...

  7. php的uniqid函数,PHP之uniqid()函数用法,phpuniqid函数用法_PHP教程

    PHP之uniqid()函数用法,phpuniqid函数用法 本文实例讲述了PHP中uniqid()函数的用法.分享给大家供大家参考.具体方法分析如下: uniqid() 函数基于以微秒计的当前时间, ...

  8. mysql contact 函数_mysql concat函数用法举例

    学习下mysql数据库中的字符串函数 concat函数的使用方法,比如select concat('11','22','33'). MySQL中concat函数 使用方法: CONCAT(str1,s ...

  9. mysql datepart_表达式中datepart函数用法及其与sqlserver depart函数、Mysql week函数的差异...

    Wyn Reports支持丰富的函数,这些函数是实现各种计算需求的表达式的基础. DatePart函数一个日期类函数,返回一个 Integer 值,其中包含给定 Date 值的指定部分(年,月,日,时 ...

最新文章

  1. 人群计数--Switching Convolutional Neural Network for Crowd Counting
  2. python的用途实例-Python基础之函数原理与应用实例详解
  3. 【hdoj_1398】SquareCoins(母函数)
  4. 博客园个性时钟,Play with me !!!
  5. MySQL Server has gone away报错原因汇总
  6. 弱口令-20211221
  7. Pointcut is not well-formed: expecting #39;name pattern#39; at character position 36
  8. php授权验证系统源码-全解开源版
  9. [数论-欧拉函数的应用]NEFU 1115
  10. 手机展示海报PSD模板、适用众多设计!
  11. 微课|中学生可以这样学Python(2.3.4节):例2-1
  12. python面试题No6
  13. vb串口 任意波特率_串口通讯基本知识
  14. Python单元测试框架——unittest
  15. 找不到python27.dll问题
  16. Email - 搭建自定义邮件服务器
  17. 【1194】移动路线
  18. 系统架构设计笔记(19)—— 网络存储技术
  19. 软件架构--架构设计的整体介绍
  20. 尚硅谷-微信小程序文档

热门文章

  1. 计算机视觉三大会议论文,计算机视觉顶级会议CVPR2021 最新出炉的最佳paper,陆续更新中...(附论文地址)...
  2. 对AI未来和人类关系的一点思考!
  3. 无人驾驶汽车入门_无人驾驶汽车将如何扭转10,000年的趋势
  4. Flutter实现json格式化输出
  5. 2020六一儿童节快乐
  6. 2019年区块链教育培训课程研究报告 |链塔智库
  7. 华云数据吴迦德:构建多云融合的行业场景服务
  8. ironpython教程_IronPython教程
  9. ironpython是python常用的实现方式_IronPython 与C#交互
  10. CreateMutex WaitForSingleObject ReleaseMutex使用