MySQL之如何将字符串分隔为列表结果集

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: MySQL之如何将字符串分隔为列表结果集

写在前面

今天在开发过程中遇到一个问题,那就是想要将一个有着固定分隔符的字符串,转换为多行的一个列表结果集,相信也有朋友遇到过,那下面就一起来看一下吧。

MySQL之如何将字符串分隔为列表结果集

要想将一个带有分隔符的字符串,转换成一个列表结果集。

在Oracle中我们通常使用level connect by关键字,但是这些关键字,在MySQL中可没有。

虽然没有这个关键字,但是思路是差不多的,也是要通过循环来解决这个问题。

咱们一步步的来,首先要做的就是mysql如何进行分割字符串。

今天要学习的第一个函数,substring_index,通过这个函数来获取到第几个分割符后的值。

一般要传入三个参数,分别是原字符串,分隔符,第几个分隔符。

通过这个三个参数,可以获取到相应的值。

我们得到了这个值后,就可以考虑如何循环得到所有的分隔符后的值了。

在mysql中,我们可以通过循环一个连续的数值,比如说一个id值。

通常我们使用help_topic表,这个是mysql中内置的一个表,通过这个表,我们可以编写出如下的一个SQL:

select substring_index('123,234,345', ',', help_topic_id + 1) from mysql.help_topic where help_topic_id < (length('123,234,345') - length(REPLACE('123,234,345', ',', '') ) + 1 )

通过这个SQL,我们可以得到一个结果,如下所示:

123

234

345

大家也可以自行去试一下,当然如果要连表查询其他表的话,也可以通过join、left join连表来查询结果。

如果通过连表查询的话,判断条件help_topic_id < (length('123,234,345') - length(REPLACE('123,234,345', ',', '') ) + 1 )就可以写在ON关键字后面即可。

总结

今天学习了在MySQL中,我们是如何将一个多分隔符的字符串,转换成一个列表的结果集,不知道大家是否有所收获。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
17天前
|
SQL 存储 关系型数据库
|
3月前
|
SQL 缓存 关系型数据库
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
65 0
|
3月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
186 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
54 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
53 0
|
3月前
|
存储 SQL 关系型数据库
MySQL技能完整学习列表7、存储过程和函数——1、存储过程(Stored Procedures)的创建和执行——2、函数(Functions)的创建和使用
MySQL技能完整学习列表7、存储过程和函数——1、存储过程(Stored Procedures)的创建和执行——2、函数(Functions)的创建和使用
38 0
|
10天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
2月前
|
SQL 关系型数据库 MySQL
Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
10 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表14、应用开发和接口
MySQL技能完整学习列表14、应用开发和接口
58 0
|
3月前
|
监控 负载均衡 关系型数据库
MySQL技能完整学习列表13、MySQL高级特性——1、分区表(Partitioning)——2、复制(Replication)——3、集群(Clustering)
MySQL技能完整学习列表13、MySQL高级特性——1、分区表(Partitioning)——2、复制(Replication)——3、集群(Clustering)
54 0