转自:https://blog.csdn.net/pjymyself/article/details/81668157

有分隔符的字符串拆分

【0】需求

数据库中 num字段值为:

实现的效果:需要将一行数据变成多行

实现的SQL

SELECTSUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) ASnumFROMmysql.help_topicWHEREhelp_topic_id< LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

涉及的知识点

【1】字符串拆分: SUBSTRING_INDEX(str, delim, count)

参数解说     解释

str     需要拆分的字符串

delim     分隔符,通过某字符进行拆分

count     当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。

举例

(1)获取第2个以“,”逗号为分隔符之前的所有字符。

SUBSTRING_INDEX('7654,7698,7782,7788',',',2)

(2)获取倒数第2个以“,”逗号分隔符之后的所有字符

SUBSTRING_INDEX('7654,7698,7782,7788',',',-2)

【2】替换函数:replace( str, from_str, to_str)

参数名     解释

str       需要进行替换的字符串

from_str   需要被替换的字符串

to_str     需要替换的字符串

2. 举例

(1)将分隔符“,”逗号替换为“”空。REPLACE('7654,7698,7782,7788',',','')

【3】获取字符串长度:LENGTH( str )

参数名   解释

str     需要计算长度的字符串

举例

(1)获取 ‘7654,7698,7782,7788’ 字符串的长度

LENGTH('7654,7698,7782,7788')

实现的SQL解析SELECTSUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) ASnumFROMmysql.help_topicWHEREhelp_topic_id< LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

此处利用 mysql 库的 help_topic 表的 help_topic_id 来作为变量,因为 help_topic_id 是自增的,当然也可以用其他表的自增字段辅助。

help_topic 表:

实现步骤:

Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历 第n个字符串。

涉及的代码片段:

help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

Step2:根据“,”逗号来拆分字符串,此处利用 SUBSTRING_INDEX(str, delim, count) 函数,最后把结果赋值给 num 字段。

涉及的代码片段:

SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num

【4】原理解析

第一步:

以”,”逗号为分隔符,根据 help_topic_id 的值来截取第n+1个分隔符之前所有的字符串。 (此处 n+1 是因为help_topic_id 是从0开始算起,而此处需从第1个分隔符开始获取。)

SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1)

eg:

当 help_topic_id= 0时,获取到的字符串 = 7654当 help_topic_id= 1时,获取到的字符串 = 7654,7698

…(以此类推)

第二步:

以”,”逗号为分隔符,截取倒数第1个分隔符之后的所有字符串。

SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1)

eg:

根据第一步,当 help_topic_id= 0时,获取到的字符串 = 7654,此时第二步截取的字符串 = 7654根据第一步,当 help_topic_id= 1时,获取到的字符串 = 7654,7698,此时第二步截取的字符串 = 7698…(以此类推)

最终成功实现了以下效果 ~

注:不含分隔符的字符串拆分可参考 MySQL——字符串拆分(无分隔符的字符串截取)

---------------------

转自:https://blog.csdn.net/pjymyself/article/details/81668157

mysql字符串拆分split功能_mysql字符串拆分实现split功能相关推荐

  1. mysql截取字符串最后两位_Mysql字符串截取函数SUBSTRING的用法说明

    感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:le ...

  2. mysql 截取第一个字符_MySQL 字符串截取SUBSTRING()函数

    MySQL 字符串截取相关函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例: select left(content,200) as ab ...

  3. mysql截取字符串最后两位_MySQL字符串函数substring:字符串截取

    MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...

  4. mysql 拼接符是什么_mysql 字符串拼接

    1.CONCAT() 2.CONCAT_WS() 3.GROUP_CONCAT() 为了方便下面举例,这里放个student表供下面使用 s_ids_names_sex 01张三男 02李四男 03王 ...

  5. mysql截取字符串最后两位_MySQL 字符串截取

    转载: MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有mid(), substr().其中,mid(), substr ...

  6. mysql去除空格的函数_MySQL字符串尾部空格匹配的问题

    遇到一个很奇怪的问题,在数据库中搜索字符串"123"会将"123"以及"123_"[注:_表示空格]的数据都搜索出来,真是令人头大. 1.背 ...

  7. php mysql字符串截取比较读取_MySQL字符串截取 和 截取字符进行查询

    通过mysql自带的一些字符串截取函数,对数据进行处理,下面是我整理的字符串截取 和 截取字符进行查询. 一.MySQL中字符串的截取 MySQL中有专门的字符串截取函数:其中常用的有两种:subst ...

  8. mysql 字符串拆分成表_Mysql实现字符串分割功能,将字符串分割为多行数据

    在Java中我们可以通过String对象的split方法将字符串按指定字符分割为字符串数组,但是MySQL中没有为我们提供字符串分割功能,今天在工作中遇到了这种需求,找到了解决办法,分享给大家 场景: ...

  9. mysql字段分隔符拆分_MySQL里实现类似SPLIT的分割字符串的函数

    下边的函数,实现了象数组一样去处理字符串. 一,用临时表作为数组 复制代码 代码如下: create function f_split(@c varchar(2000),@split varchar( ...

最新文章

  1. html5 canvas 加载图片
  2. SAP MM 采购单据的屏幕布局配置中字段选择值“$$$$”有什么用处?
  3. [ZZ]STM32之RCC
  4. VMware中linux与window目录共享
  5. 选择海外数据中心是否等级越高越好
  6. 【转】msyql使用-用户创建/权限配置
  7. git 未能顺利结束(退出码1)
  8. AutoValue:生成的不可变值类
  9. STL源码剖析 deque双端队列 概述
  10. Dubbo 需求、架构、使用Demo
  11. 做了44年保洁员,一生只会5个字,她却成为香港大学院士
  12. 使用Asp.net的TreeView来构建用户选择输入
  13. Unity 3D 网络游戏架构设计
  14. dz论坛服务器限制上传大文件,Discuz 如何设置允许上传附件大小
  15. Debain查看ip地址
  16. SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件
  17. 微信打开链接提示用浏览器打开
  18. 【Android】短信应用——短信信息实时获取
  19. 用电预付费系统在工业园区物业管理中的应用
  20. ArcGIS Pro中管线三维符号化方法

热门文章

  1. CentOS7 LNMP一键安装
  2. PID控制器整理分享
  3. pytorch-CNN岩石分类(本地数据)
  4. Thumbs.db文件
  5. java utf8 文件转gbk_java txt文件utf-8转GBK的问题
  6. 下载Vivado并获取免费License
  7. 一个球从100米高处自由落下,每次着地后又跳回原来高度的 一半再落下,当它第10次着地时
  8. 高职单招计算机基础知识,高职单招计算机类考试复习材料.doc
  9. 多模型结合的等长拼写纠错 | 全国中文纠错大赛冠军方案
  10. linux使用mtcnn进行人脸检测,Linux下使用FDDB 测试MTCNN人脸检测模型生成 ROC 曲线