mysql根据分隔符将一行数据拆分成多行数据

文章目录

  • mysql根据分隔符将一行数据拆分成多行数据
    • 关键函数
    • 原始数据
    • 处理结果展示
    • 三种方式,相同的原理
      • 使用MySql库中的自增序列表
      • 自建自增序列表
      • 以数据库里已有的表,构建自增序列表
    • 小结

关键函数

substring_index(str,delim,count)

str:要处理的字符串

delim:分隔符

count:计数

例子:str=f.s.z

​ substring_index(str,’.’,1)

​ 结果是:f

​ substring_index(str,’.’,2)

​ 结果是:f.s

​ 也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容

​ 相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:

​ substring_index(str,’.’,-2)

​ 结果为:s.z

​ 有人会问,如果我要中间的的s怎么办?

​ 很简单的,两个方向:

​ 从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:

substring_index(substring_index(str,’.’,-2),’.’,1);

原始数据

处理结果展示

三种方式,相同的原理

  • 使用MySql库中的自增序列表

SELECTa.id,a.email,substring_index(substring_index(a.name,',',b.help_topic_id + 1),',' ,- 1) AS splitName
FROMt_emp a
JOIN mysql.help_topic b ON b.help_topic_id < (length(a.name) - length(REPLACE (a.name, ',', '')) + 1
)
  • 自建自增序列表

CREATE TABLE `auto_increment` (
`id` int(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `auto_increment` VALUES ('0');
INSERT INTO `auto_increment` VALUES ('1');
INSERT INTO `auto_increment` VALUES ('2');
INSERT INTO `auto_increment` VALUES ('3');
INSERT INTO `auto_increment` VALUES ('4');
SELECTa.id,a.email,substring_index(substring_index(a.name,',',b.id+ 1),',' ,- 1) AS splitName
FROMt_emp a
JOIN auto_increment b ON b.id < (length(a.name) - length(REPLACE (a.name, ',', '')) + 1
)
  • 以数据库里已有的表,构建自增序列表

SELECT a.id,a.email,substring_index(substring_index(a.name,',',b.id+1),',',-1) AS splitName
FROMt_emp a
join
(SELECT (@ROW :=@Row + 1) AS id FROM t_user,(SELECT @Row:=-1) AS zz
) AS b ON b.id < (length(a.name) - length(replace(a.name,',','')) + 1
)
ORDER BY a.id

t_user表是库里已有表(可以不是序列表),行数必须大于分割字段的最大逗号数

小结

  1. 序列表必须从0开始,行数与最多的逗号个数有关,行数至少比最长逗号个数加1,可以建0~1000。(其实也可以不从0开始,但是sql语句要做相对应的修改)

  2. 为什么不用MySQL自带的自增序列表mysql.help_topic?因为好多公司的数据库是没有权限操作这些表的, 不能使用。

  3. 序列表必须从0开始,行数与最多的逗号个数有关,行数至少比最长逗号个数加1,可以建0~1000。(其实也可以不从0开始,但是sql语句要做相对应的修改)

  4. 为什么不用MySQL自带的自增序列表mysql.help_topic?因为好多公司的数据库是没有权限操作这些表的, 不能使用。

参考博客

mysql根据分隔符将一行数据拆分成多行数据相关推荐

  1. MYSQL 一行数据拆分成多行数据

    -- WH 拆分成多行 数据 20230519 SELECT * FROM ( SELECT SKU,Primary_Warehouse, SUBSTRING_INDEX(SUBSTRING_INDE ...

  2. 【pandas】将单元格中的多个数据拆分为多行数据(explode),以csv文件为源文件进行处理

    [pandas]将单元格中的多个数据拆分为多行数据(explode) 1.原始数据(test.csv) 2.需求 将"别名"."科目"这两列中带有多个数据的单元 ...

  3. pandas中将每一行数据拆分成多行的方法

    一.应用场景 用pandas处理数据时,我们经常会遇到将一行拆分成多行,或者将一列拆分成多列的方法,今天主要讲第一个问题,第二个问题下次讲.举个例子:我现有的数据如下: 其中TrainData是我需要 ...

  4. mysql 一行数据拆分成多行

    目录 1.查找出被分隔符(此处为斜线/)分隔字段需要拆分的最大数量 2.创建一张临时表用于联合查询,方便把处理表单行记录分隔为多行 3.关键在于连表查询 ON b.id <= 斜线/分隔的数量 ...

  5. mysql一行数据拆分为多行数据

    最近有个项目中有个问题想在sql中解决,使用的是mysql并不是很熟悉,解决的问题是: 将该条数据按照TXYMZL拆分为两条数据,我上网也查了一下,看到普遍是有两种做法: 第一种:写存储过程来解决这个 ...

  6. mysql怎样删除上一行_mysql如何删除第一行数据

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  7. 拆分列成多行_把订单按货品拆分成多行(上)

    办公的小伙伴们,今天小编来和大家分享. 如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 一一一一一一一一一一一一一一一一一一一一一一 方法一 ...

  8. 单元格内多个姓名拆分成一列_把订单按货品拆分成多行

    办公的小伙伴们,今天小编来和大家分享:如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 方法一:借word来拆分内容 Step1:把表格复制到 ...

  9. mysql string agg_【转】SQL Server一个字段串拆分成多行显示或者多行数据合并成一个字符串(STRING_AGG、STRING_SPLIT)...

    目录 概述 STRING_AGG(合并):多行数据合并成一个字符串,以逗号隔开. STRING_SPLIT(拆分):一个字符串,拆分成多行. 一.多行数据合并成一个字符串 1.通过 FOR xml p ...

最新文章

  1. js返回上一页实用的
  2. Spark 个人实战系列(1)--Spark 集群安装
  3. 关于apache虚拟主机htttpd的配置实例 (更新中)
  4. Google Bigtable
  5. mac bash file密码_MAC 常用命令汇总
  6. mysql+查询会话sql_MySQL Processlist--查看会话执行过的SQL情况
  7. 2021第一届网刃杯网络安全大赛-签到题
  8. 【数据结构】(森林)求以孩子兄弟表示法存储的森林叶子结点数
  9. 七种常见的数据分析法之:对比分析法
  10. MMCODE 1003: 小谭变美日记(c++)
  11. CAD-Cass小结(5)————WIN10安装并运行CAD2006及Cass7.0
  12. 动态规划_数字的划分
  13. 雷曼另类“死因”:巴菲特漏看求救短信
  14. 软件开发之计划阶段: ”声控打鼓”游戏的”用户/场景”分析
  15. UE4 时光倒流(蓝图)
  16. HDMI转换芯片——MS1858
  17. GitHub 热点速览 Vol.13:近 40k star 计算机论文项目再霸 GitHub Trending 榜
  18. X版Dr.COM校园网使用路由器上网
  19. 高中计算机学什么软件,高中学业水平考试的计算机上机考试考的是啥软件
  20. 【题解】【PTA-Python题库】第1章-3 输出“人生苦短,我学Python” (10 分)

热门文章

  1. 入门理解计算机视觉、图形学、图像处理
  2. 服务器端口怎么调出虚拟键盘,Win8小技巧之如何设置触控虚拟键盘
  3. 九章量子计算机属于专用计算机吗,九章“问世”了 你知道什么是量子计算机吗?...
  4. 05-阿里云视频点播服务与谷粒学院整合视频点播技术
  5. 【图神经网络】图神经网络(GNN)学习笔记:图分类
  6. 测试点击屏幕次数的软件_闪电点击app下载-闪电自动点击 安卓版v1.3.2
  7. mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...
  8. mysql----where 1=1是什么意思
  9. elastic-search学习笔记
  10. PLC PID控制优化系列之积分分离、变积分系数(FC)