我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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


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 ;

实现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 ;

实现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逗号分隔内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

1:定义存储过程,用于分隔字符串DELIMITER $$ USE `mess`$$ DROP PROCEDURE IF EXISTS `splitString`$$ CREATE DEFINER=`root`@`%` PROCEDURE `
2022-05-14

MYSQL统计逗号分隔字段元素的个数

写SQL的时候会遇到如下的问题,统计如下表中project_id字段中id的个数。company_idproject_id7794882,214880,94881,154882,94871,948791402890,2872,3178,4
2023-01-17

MySQL中将一列以逗号分隔的值行转列的实现

前言有时会遇到没有遵守第一范式设计模式的业务表。即一列中存储了多个属性值。如下表pkvalue1ET,AT2AT,BT3AT,DT4DT,CT,AT一般有这两种常见需求(测试数据见文末)1.得到所有的不重复的值,如valueATBTCTDT
2022-05-21

MySQL实现用逗号进行拼接、以逗号进行分割

目录mysql用逗号进行拼接、以逗号进行分割group_concat 函数MySQL多行数据用逗号拼接返回一行解决方案GROUP_CONCAT简单阐述总结MySQL用逗号进行拼接、以逗号进行分python割MySQL中,把查询的结果拼接成
2022-12-22

mysql对以逗号分隔的字段内容进行查询——find_in_set函数或locate函数

mysql对以逗号分隔的字段内容进行查询 find_in_set函数 背景 使用mysql时,有可能一个字段代表一个集合,如果将这个集合单独抽成一张表又不值当的,这个时候我们存储时,可以选择用逗号将数据分隔开(只能用英文的逗号),如图所示:
2023-08-19

MySQL将一个字段中以逗号分隔的取出来形成新的字段实现

1例如:要把如图1的字段拆分图2select account_id,substring_index(substring_index(a.related_shop_ids,',',b.help_topic_id+1),',',-1) shop
2022-05-15

mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现

转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server 2008 R2 实现思路: 将组合字符串
mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现
2015-02-01

mysql把查询结果按逗号分割的实现示例

目录步骤一:使用GROUP_CONCAT函数示例注意事项语法示例注意事项在实际的数据库查询中,有时候我们需要将查询结果按逗号分割成一个字符串,以便于在应用程序中进一步处理或展示。本文将介绍如何使用mysql数据库来实现将查询结果按逗号分割的
mysql把查询结果按逗号分割的实现示例
2024-09-24

MySQL加减间隔时间函数DATE_ADD和DATE_SUB的实现

目录前言语法示例代码运用前言mysql中内置函数date_add 和 date_sub能对指定的时间进行增加或减少一个指定的时间间隔,返回的是一个日期。语法添加时间间隔DATE_ADD(date,INTERVAL expr type
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的实现
2024-09-04

MySQL实现replace函数的几种实用场景

REPLACE语法REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str,这里的from_str不支持正则匹配。 操作实例测试表数据如下:mysql> select
2022-05-26

如果 MySQL SUBSTRING_INDEX() 函数中的参数“count”的值大于分隔符出现的总数,会发生什么情况?

如果参数“count”的值大于分隔符出现的总数,MySQL SUBSTRING_INDEX() 函数将返回与输出相同的字符串。可以通过以下示例进行演示 -mysql> Select SUBSTRING_INDEX(My Name is Ra
2023-10-22

Mysql中常用函数之分组,连接查询功能实现

目录函数单行函数字符函数数学函数日期函数流程控制函数分组函数分组查询按单个字段分组在分组前进行条件筛选在分组之后进行条件筛选按多字段分组连接查询内连接(INNER JOIN)等值连接非等值连接自连接外连接左/右外连接函数在mysql中函数
Mysql中常用函数之分组,连接查询功能实现
2024-10-18

编程热搜

目录