mysql根据分隔符将一行数据拆分成多行数据
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表是库里已有表(可以不是序列表),行数必须大于分割字段的最大逗号数
小结
序列表必须从0开始,行数与最多的逗号个数有关,行数至少比最长逗号个数加1,可以建0~1000。(其实也可以不从0开始,但是sql语句要做相对应的修改)
为什么不用MySQL自带的自增序列表mysql.help_topic?因为好多公司的数据库是没有权限操作这些表的, 不能使用。
序列表必须从0开始,行数与最多的逗号个数有关,行数至少比最长逗号个数加1,可以建0~1000。(其实也可以不从0开始,但是sql语句要做相对应的修改)
为什么不用MySQL自带的自增序列表mysql.help_topic?因为好多公司的数据库是没有权限操作这些表的, 不能使用。
参考博客
mysql根据分隔符将一行数据拆分成多行数据相关推荐
- MYSQL 一行数据拆分成多行数据
-- WH 拆分成多行 数据 20230519 SELECT * FROM ( SELECT SKU,Primary_Warehouse, SUBSTRING_INDEX(SUBSTRING_INDE ...
- 【pandas】将单元格中的多个数据拆分为多行数据(explode),以csv文件为源文件进行处理
[pandas]将单元格中的多个数据拆分为多行数据(explode) 1.原始数据(test.csv) 2.需求 将"别名"."科目"这两列中带有多个数据的单元 ...
- pandas中将每一行数据拆分成多行的方法
一.应用场景 用pandas处理数据时,我们经常会遇到将一行拆分成多行,或者将一列拆分成多列的方法,今天主要讲第一个问题,第二个问题下次讲.举个例子:我现有的数据如下: 其中TrainData是我需要 ...
- mysql 一行数据拆分成多行
目录 1.查找出被分隔符(此处为斜线/)分隔字段需要拆分的最大数量 2.创建一张临时表用于联合查询,方便把处理表单行记录分隔为多行 3.关键在于连表查询 ON b.id <= 斜线/分隔的数量 ...
- mysql一行数据拆分为多行数据
最近有个项目中有个问题想在sql中解决,使用的是mysql并不是很熟悉,解决的问题是: 将该条数据按照TXYMZL拆分为两条数据,我上网也查了一下,看到普遍是有两种做法: 第一种:写存储过程来解决这个 ...
- mysql怎样删除上一行_mysql如何删除第一行数据
我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...
- 拆分列成多行_把订单按货品拆分成多行(上)
办公的小伙伴们,今天小编来和大家分享. 如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 一一一一一一一一一一一一一一一一一一一一一一 方法一 ...
- 单元格内多个姓名拆分成一列_把订单按货品拆分成多行
办公的小伙伴们,今天小编来和大家分享:如何将一个单元格中有多行数据拆分成多行. 看下图:要把订单按货品拆分成多行明细. 下面给出几种不同的方法. 方法一:借word来拆分内容 Step1:把表格复制到 ...
- mysql string agg_【转】SQL Server一个字段串拆分成多行显示或者多行数据合并成一个字符串(STRING_AGG、STRING_SPLIT)...
目录 概述 STRING_AGG(合并):多行数据合并成一个字符串,以逗号隔开. STRING_SPLIT(拆分):一个字符串,拆分成多行. 一.多行数据合并成一个字符串 1.通过 FOR xml p ...
最新文章
- js返回上一页实用的
- Spark 个人实战系列(1)--Spark 集群安装
- 关于apache虚拟主机htttpd的配置实例 (更新中)
- Google Bigtable
- mac bash file密码_MAC 常用命令汇总
- mysql+查询会话sql_MySQL Processlist--查看会话执行过的SQL情况
- 2021第一届网刃杯网络安全大赛-签到题
- 【数据结构】(森林)求以孩子兄弟表示法存储的森林叶子结点数
- 七种常见的数据分析法之:对比分析法
- MMCODE 1003: 小谭变美日记(c++)
- CAD-Cass小结(5)————WIN10安装并运行CAD2006及Cass7.0
- 动态规划_数字的划分
- 雷曼另类“死因”:巴菲特漏看求救短信
- 软件开发之计划阶段: ”声控打鼓”游戏的”用户/场景”分析
- UE4 时光倒流(蓝图)
- HDMI转换芯片——MS1858
- GitHub 热点速览 Vol.13:近 40k star 计算机论文项目再霸 GitHub Trending 榜
- X版Dr.COM校园网使用路由器上网
- 高中计算机学什么软件,高中学业水平考试的计算机上机考试考的是啥软件
- 【题解】【PTA-Python题库】第1章-3 输出“人生苦短,我学Python” (10 分)
热门文章
- 入门理解计算机视觉、图形学、图像处理
- 服务器端口怎么调出虚拟键盘,Win8小技巧之如何设置触控虚拟键盘
- 九章量子计算机属于专用计算机吗,九章“问世”了 你知道什么是量子计算机吗?...
- 05-阿里云视频点播服务与谷粒学院整合视频点播技术
- 【图神经网络】图神经网络(GNN)学习笔记:图分类
- 测试点击屏幕次数的软件_闪电点击app下载-闪电自动点击 安卓版v1.3.2
- mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...
- mysql----where 1=1是什么意思
- elastic-search学习笔记
- PLC PID控制优化系列之积分分离、变积分系数(FC)