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 函数(用逗号分隔)的实现相关推荐

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

    1:定义存储过程,用于分隔字符串 DELIMITER $$ USE `mess`$$ DROP PROCEDURE IF EXISTS `splitString`$$ CREATE DEFINER=` ...

  2. mysql Split函数

    mysql没有split函数,这里手动写一个: CREATE PROCEDURE sp_split(in c1 varchar(2000),in split1 varchar(20)) BEGIN C ...

  3. split mysql的用法_mysql split函数用法实例

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

  4. mysql实现自定义split函数

    1.自定义split函数脚本 CREATE DEFINER = `root`@`%` FUNCTION `tjdemo`.`fun_get_split_string_total`(f_string v ...

  5. f split mysql_mysql split函数多种实现方法

    例1,mysql split函数代码. 复制代码 代码示例: delimiter $$ drop function if exists `f_split_varchar`$$ create funct ...

  6. mysql有split函数么_mysql中split函数

    在mysql中并没有split函数,需要自己写: 1)获得按指定字符分割的字符串的个数: Sql代码 DELIMITER$$ DROP FUNCTION IFEXISTS`sims`.`func_ge ...

  7. mysql 中split_在mysql中实现split函数的几种方法

    mysql 5.* 的版本现在没有split 函数,以下是几个自定义的split函数,供大家参考. 先设置:SET GLOBAL log_bin_trust_function_creators = 1 ...

  8. mysql 创建函数 split_在mysql中实现split函数的几种方法

    在mysql中实现split函数的几种方法 关注:98  答案:2  mip版 解决时间 2021-02-07 11:27 提问者夜落花台 2021-02-07 02:11 在mysql中实现spli ...

  9. mysql split 按 分割_mysql分割字符串split

    在mysql数据库中实现split函数: 代码1: 代码示例: DELIMITER $$ CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_stri ...

最新文章

  1. 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )
  2. 取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据
  3. MySQL数据库如何管理与维护_mysql数据库的管理与维护
  4. c# 判断点是否在区域内 点在区域内 在多边形内 判断
  5. 编译安装LNMP全程实录
  6. 生成sql条件的类(转)
  7. 原生js实现文字无缝向上滚动效果
  8. 一次接口超时排查,花费了我两个星期。。
  9. java模拟器gba模拟器,CAPRunner-JavaCard字节码仿真器-Benoît Allard
  10. everthing 添加右键菜单
  11. c语言字符串把小写转换大写字母,C语言把一个字符串里所有的大写字母换成小写字母,小写字母换成大写字母.其他字符保持...
  12. 物联网安全架构与基础设施
  13. Python字符串格式化
  14. 2016年C语言专业课,2016-2018年中央财经大学C语言程序设计考研真题及答案解析(6)...
  15. java 7 锁优化_自Java 6/Java 7开始,Java虚拟机对内部锁的实现进行了一些优化。这些优化主要包括锁消除(Lock Elision)、锁粗化(Lock Coarse...
  16. FastReport不打印空白行
  17. MIPS反汇编拆炸弹
  18. 算法基础(2) | 高精度、前缀和、差分
  19. socket编程在windows和linux下的区别
  20. 软考初级程序员上午单选题(19)

热门文章

  1. ATFX:英首相特拉斯的减税政策,或加重高通胀问题
  2. 一个女人频繁做这些事,真的很爱你
  3. Java支付宝身份验证接口接入指南(人脸验证)
  4. 使用wireshark对grpc的helloworld抓包分析
  5. 计算机管理器里的WiFi不见了,电脑wifi图标不见了也连不上网
  6. 计算机不同进制数之间的转换,计算机进制数之间的转换002
  7. KT1025A蓝牙音频BLE芯片读取U盘和TF卡的TXT BIN文件串口输出
  8. python123怎么注销账号_怎么才能注销账号?
  9. apa引用要在文中吗_如何根据 APA 格式排版?
  10. (二)计算机组成原理——计算机的基本组成