mysql查询包含逗号的数据,并逗号拆分为多行展现

2023-11-15

  在做系统开发的时候,有可能是由于之前的遗留问题,导致在数据入库的时候,将多个数据以逗号分隔的实行,存储在一条数据中,例如:

ID VALUE
1 yang,zheng,song
2 zhao,qian,sun
3 jiang

 

 

 

 

现在因为新的需求,需要将这些数据以下边的方式存储在数据库中,方便查询和处理:

ID VALUE
1 yang
1 zheng
1 song
2 zhao
2 qian
2 sun
3 jiang

 

 

 

 

 

 

所以需要将原有的数据查询出来,然后进行逗号分隔为多行,并插入到新的表中。

假设我们需要处理的表的结构为:

NAME TYPE LEN
ID INT 11
NAME VARCHAR 255

 

 

 

将数据查询并分隔的sql语句为:

SELECT a.id,
substring_index( substring_index( a.name, ',', b.help_topic_id + 1 ), ',',- 1 ) name
FROM table1 a
JOIN mysql.help_topic b ON b.help_topic_id < ( length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 ) 
ORDER BY a.id

插入就比较简单了,使用insert into语句将查出的数据插入到相应的表中即可。

查询的主要思路在于,和一个包含连续自增长字段的表进行 join,得到字符串分隔后的索引值,其中 

length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 语句获得字符串逗号分隔之后得到的数据长度,两边关联之后,会得到相应行数的数据,比如数据
1 yang,zheng.song


在JOIN之后会得到:
ID NAME HELP_TOPIC_ID
1 yang,zheng,song 0
1 yang,zheng,song 1
1 yang,zheng,song 2





之后对查询中的结果,借助substring_index方法进行截取,然后得到自己想要的数据。

我们在JOIN的时候借助了 mysql.help_topic 表,表中的help_topic_id是从0到582左右连续自增的数值,所以我们可以使用,如果有遇到数据经过逗号分隔之后得到的数组长度大于582,则需要自己建立一个连续自增表来进行JOIN,比如:
create table incre_table (AutoIncreID int);
insert into incre_table values (0);
insert into incre_table values (1);
insert into incre_table values (2);
。。。。。。。。。。

转载于:https://www.cnblogs.com/icesnow521/p/9253946.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql查询包含逗号的数据,并逗号拆分为多行展现 的相关文章

  • hadoop学习笔记之分布式计算框架

    分布式计算框架 移动计算而不是移动数据 移动计算就是把你写好的计算 程序拷贝到不同的计算节点上运行 MapReduce适合做离线计算 Storm适合做流失计算 Spark适合做内存计算框架 从HDFS上存储的数据作为我们MapReduce的

随机推荐

  • 前端如何高效的与后端协作开发

    前端如何高效的与后端协作开发 1 前后端分离 前端与后端的分离 能使前端的开发脱离后端的开发模式 拥有更大的自由度 以此便可做前端工程化 组件化 单页面应用等 可以参考 前后端分离 web与static服务器分离 2 尽量避免后端模板渲染
  • 点云数据生成鸟瞰图笔记

    参考博客 处理点云数据 一 点云与生成鸟瞰图 灰信网 软件开发博客聚合 点云数据 点云数据一般表示为N行 至少三列的numpy数组 每行对应一个单独的点 所以使用至少3个值的空间位置点 X Y Z 来表示 如果点云数据来自于激光雷达传感器
  • jQuery dataTables 的使用

    jQuery 的插件 dataTables 是一个优秀的表格插件 提供了针对表格的排序 浏览器分页 服务器分页 筛选 格式化等功能 dataTables 的网站上也提供了大量的演示和详细的文档进行说明 为了方便学习使用 这里一步一步进行说明
  • 跨域和处理跨域

    一 跨域的概念 在讨论跨域之前 我们先来说一下什么是 同源策略 看下面这个URL地址 该URL由 协议 IP 端口等部分组成 如果他的协议 IP和端口3者都一样我们就可以称之为是同源 有一个不一样就不是同源 即 跨域 也就是跨域访问 默认这
  • SX126x-数字接口SPI和控制功能

    目录 1 前言 2 Reset 3 SPI接口 3 1 属性要求 3 2 时序参数要求 1 离开Sleep模式时的时序 4 BUSY引脚 4 1 Tsw 4 2 TswMode 5 DIO 5 1 DIO1 5 2 DIO2 5 3 DIO
  • 某校2016专硕编程题-矩阵排序

    问题 编写一个函数 功能是对矩阵进行处理 对于一个m n行的矩阵 执行函数后使其每行元素的大小按照升序排列 分析 每行元素排列就是将数组的每一行执行一次排序算法 Java实现 对矩阵的单行进行排序 随便选一种排序算法即可 选择排序 publ
  • Java中的constant是什么_如何在Java中定义常量(Constant)

    Method One interface ConstantInterface String SUNDAY SUNDAY String MONDAY MONDAY String TUESDAY TUESDAY String WEDNESDAY
  • springcloud+vue+nginx+linux项目部署

    一 项目打包 右边栏Maven Projects gt package 进行项目打包 可以把闪电标志点掉 这样会过滤掉test项 二 将jar包上传到服务端 并运行jar包 nohup java jar XXXX jar gt XXXX t
  • 全国职业技能大赛云计算--高职组赛题卷②(私有云)

    全国职业技能大赛云计算 高职组赛题卷 私有云 第一场次题目 OpenStack平台部署与运维 任务1 基础运维任务 5分 任务2 OpenStack搭建任务 15分 任务3 OpenStack云平台运维 15分 任务4 OpenStack云
  • 华为OD机试 Python 最长公共后缀

    描述 你有一堆字符串 你的任务是找出这堆字符串共同拥有的那段尾字符 如果没有共同的尾 就回答 Zero 具体规定 字符串的数量至少为2 最多为1000 每个字符串的字符都是ASCII码里的 所以范围是 1 126 示范 比如 给你 abc
  • BF,KMP,BM三种字符串匹配算法性能比较

    三种最基本的字符串匹配算法是BF KMP以及BM BF算法是最简单直接的匹配算法 就是逐个比较 一旦匹配不上 就往后移动一位 继续比较 所以比较次数很都 关于KMP和BM的详细介绍可以参考下面的两个link 是讲得比较好的 KMP http
  • Xilinx原语使用方法

    以下链接为百度文库链接 没事的时候可以点击看看 学习学习 xilinx原语的使用方法 Xilinx原语的使用方法2
  • 面试官:你来设计一下抖音直播功能测试用例吧!

    实战案例 Q 微博发动态 设计一下测试点 虽说是发动态 但是测试时不能只是关注发动态这一操作的功能 发完动态之后 我们要确保动态要对外可见 对关注的人可见 单单测试发动态这个操作 实际上意义是不大的 毕竟只测发动态 不能实现测试闭环 所以测
  • [STM32F1]STM32F103滴答定时器定时不准?)

    STM32F103滴答定时器定时不准 前几天调了1块F103ZET6的开发板 用了个系统定时器 感觉不准 最终找到原因是因为选错了时钟源 今天来分享一下也算是给大家以后出现问题做个参考吧 说到时钟源 得说到STM32系统时钟的初始化 前面就
  • 深度学习_用LSTM+Attention与Self-Attention

    笔者在重新尝试用深度学习的各个模型对序列进行预测 就LSTM进行一些使用记录 一 一些优化 和keras一样的权重初始化 有时候我们torch训练的LSTM 没有keras好 可以将权重按keras的方式进行初始化 增加attention
  • Neo4j的下载与安装(完整详细版)

    简要 1 jdk安装 2 neo4j下载 3 neo4j环境配置 4 cmd启动 neo4j bat console 注意jdk的版本要11以上才可以和neo4j匹配 但我安装时用了16 0也报错了 然后重新下载了一个11的 就不报错了 具
  • base格式图片转文件存储

  • Docker 宿主机与容器直接文件移动命令

    1 将容器中的文件复制到宿主机 docker cp nginx test etc nginx usr local nginx 说明 nginx test 容器名称 etc nginx 容器目录存放目录 usr local nginx 宿主机
  • STM32使用FAT文件系统-代码简读

    FAT的一些基础知识 概念先看我这一篇 FAT32文件和目录的组织方式 fat32文件系统架构设计 暴躁的野生猿的博客 CSDN博客 fat文件系统的所有外部接口都在ff h中 物理驱动器 逻辑驱动器 一个物理驱动器就是一个真实的存储设备
  • mysql查询包含逗号的数据,并逗号拆分为多行展现

    在做系统开发的时候 有可能是由于之前的遗留问题 导致在数据入库的时候 将多个数据以逗号分隔的实行 存储在一条数据中 例如 ID VALUE 1 yang zheng song 2 zhao qian sun 3 jiang 现在因为新的需求