mysql split函数用逗号分隔的实现

 更新时间:2020年10月28日 10:56:36   作者:xinglei200909931  
这篇文章主要介绍了mysql split函数用逗号分隔的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1:定义存储过程,用于分隔字符串

DELIMITER $$
USE `mess`$$
DROP PROCEDURE IF EXISTS `splitString`$$
CREATE DEFINER=`root`@`%` 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_get_splitStringTotal(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_splitString(f_string,f_delimiter,i));  
  END WHILE;  
END$$
DELIMITER ;

2:实现func_get_splitStringTotal函数:该函数用于计算分隔之后的长度,这里需要了解的函数:

REPLACE(str,from_str,to_str)

Returns the string str with all occurrences of the string from_str replaced by the string to_str. REPLACE() performs a case-sensitive match when searching for from_str.
例如:
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'

具体实现:

DELIMITER $$

USE `mess`$$

DROP FUNCTION IF EXISTS `func_get_splitStringTotal`$$

CREATE DEFINER=`root`@`%` 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 ;

3:实现func_splitString函数:用于获取分隔之后每次循环的值,这里需要了解的函数:

(1)REVERSE(str)

Returns the string str with the order of the characters reversed.
例如:mysql> SELECT REVERSE('abc');
    -> 'cba'

(2)
SUBSTRING_INDEX(str,delim,count)


Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. SUBSTRING_INDEX() performs a case-sensitive match when searching for delim.

例如:
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
    -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
    -> 'mysql.com'

具体实现:

DELIMITER $$

USE `mess`$$

DROP FUNCTION IF EXISTS `func_splitString`$$

CREATE DEFINER=`root`@`%` 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$$

DELIMITER ;

使用:

(1)调用存储过程:

CALL splitString('1,3,5,7,9',',');

(2):查看临时表

SELECT val_ FROM tmp_split AS t1;

 结果:


到此这篇关于mysql split函数用逗号分隔的实现的文章就介绍到这了,更多相关mysql split逗号分隔内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql连接查询、联合查询、子查询原理与用法实例详解

    mysql连接查询、联合查询、子查询原理与用法实例详解

    这篇文章主要介绍了mysql连接查询、联合查询、子查询原理与用法,结合实例形式详细分析了mysql连接查询、联合查询、子查询的基本概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • MySql带OR关键字的多条件查询语句

    MySql带OR关键字的多条件查询语句

    MySQL带OR关键字的多条件查询,与AND关键字不同,OR关键字,只要记录满足任意一个条件,就会被查询出来。即AND的优先级高于OR
    2017-07-07
  • mysql binlog占用大量磁盘空间的解决方法

    mysql binlog占用大量磁盘空间的解决方法

    MySQL binlog(Binary Log)是MySQL数据库的一种重要组件,用于记录所有对数据库的更改操作,当MySQL服务器接收到对数据库的写入请求并成功执行后,这些更改会被写入binlog,本文给大家介绍了mysql binlog占用大量磁盘空间的解决方法,需要的朋友可以参考下
    2024-06-06
  • MySQL的表分区详解

    MySQL的表分区详解

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区、为什么要对表进行分区、表分区的4种类型详解等,需要的朋友可以参考下
    2014-03-03
  • MySQL查看数据库连接数的方法

    MySQL查看数据库连接数的方法

    本文主要介绍了MySQL查看数据库连接数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • MySQL8.0新特性之不可见主键的使用

    MySQL8.0新特性之不可见主键的使用

    MySQL8.0.30版本引入不可见主键,它可以自动为没有显式指定主键的 InnoDB 表创建一个不可见的主键,本文主要介绍了MySQL8.0新特性之不可见主键的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • mysql 5.7.13 安装配置笔记(Mac os)

    mysql 5.7.13 安装配置笔记(Mac os)

    这篇文章主要为大家详细介绍了Mac os下mysql 5.7.13 安装配置方法教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • MySQL日期数据类型、时间类型使用总结

    MySQL日期数据类型、时间类型使用总结

    MySQL日期数据类型、MySQL时间类型使用总结,需要的朋友可以参考下。
    2010-06-06
  • MySQL索引优化之分页探索详细介绍

    MySQL索引优化之分页探索详细介绍

    大家好,本篇文章主要讲的是MySQL索引优化之分页探索详细介绍,感兴趣的同学赶快来看看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • MySQL数据库触发器从小白到精通

    MySQL数据库触发器从小白到精通

    触发器是SQLserver提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等
    2022-03-03

最新评论