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;
结果:
相关推荐
1:定义存储过程,用于分隔字符串 DELIMITER $$ USE `mess`$$ DROP PROCEDURE IF EXISTS `splitString`$$ CREATE DEFINER=`root`@`%` PROCEDURE `splitString`(IN f_string VARCHAR(1000),IN f_delimiter VARCHAR(5...
MYSQL 日期函数大全,供大家一起共同分享学习。
前言 有时会遇到没有遵守第一范式设计模式的业务表。即一列中存储了多个属性值。如下表 pk value ...select distinct(substring_index(substring_index(a.col,',',b.help_topic_id+1),',',-1)) ...
基本上常用的都在这里了,如有遗漏还望指出。 MySQL常用函数大全
MySQL常用函数 MySQL常用函数
mysql 5.* 的版本现在没有split 函数,但有些地方会用,在这里就简单记录一下
MySQL数据库函数手册,私家珍藏,经验积累
用MySQL函数实现 小写金额与大写金额的互转,用数据库来实现
1例如:要把如图1的字段拆分图2 select account_id, substring_index(substring_... mysql.help_topic b on b.help_topic_id < (length(a.related_shop_ids) - length(replace(a.related_shop_ids,',',''))+1
STRCMP STRCMP()函数是MySQL里比较字符串的最简单方式之一。这个函数接受两个参数——要被比较的字符串。如果这个两个字符串相同,它就返回0;如果第一个大于第二个,它就返回1;如果第一个小于第二个,它就返回-1 ...
PHP访问MySQL数据库函数简介 PHP访问MySQL数据库函数简介
MySQL函数举例常用函数的分类等,列举出常用函数的种类和用法,规范的举例,使您学习更轻松
Mybatis Mapper.xml中字符串形式传参,逗号分隔 AND中拼接OR。
mysql的函数手册——汇总了mysql的常用函数
Mysql的常用函数整体, 从网上收集的一些常用函数, 进行汇总整体成文档 MySQL控制流函数: CASE WHEN[test1] THEN [result1]...ELSE [default] END如果testN是真,则返回resultN,否则返回default CASE [test] WHEN...
mysql自定义函数 在MySQL数据库中,可以通过创建自定义函数来扩展数据库的功能,以便更方便和灵活地处理数据。以下是创建MySQL自定义函数的基本步骤:
MYSQL中常用的函数非常的多,反正我是记不住,此文档中本人自己总结的,送给那些正在学习MYSQL的朋友们,当你们想不起来要用的函数的格式,就可以打来这个文档,希望可以帮到你们!
mysql日期函数 mysql日期函数 mysql日期函数 mysql日期函数 mysql日期函数
包含了MySQL常用的所有函数及详解。IFNULL(expr1,expr2),FROM_UNIXTIME。
MYSQL函数和操作符 操作符 . 操作符优先级 . 圆括号 . 比较函数和操作符 . 逻辑操作符 控制流程函数 字符串函数 . 字符串比较函数 数值函数 . 算术操作符 . 数学函数 日期和时间函数 MySQL使用什么日历? ...