当前位置: 首页 > article >正文

mysql逗号分隔字段拆成行简述

概述

在实际业务中总有一些字段内容是逗号分隔的,然后后续业务需要扩展时就很难受;

所以一般在这种情况下都是需要建立关联表,将字段内容拆分;

当前使用mysql版本
8.0.32

拆分demo

这里要注意mysql.help_topic表的记录行数,我这边mysql8700条左右;
需要保证mysql.help_topic的行数 >= 逗号个数 + 1(2个逗号3个内容,需要join成3行)

本质就是按照逗号个数将记录扩充,然后截取其中对应的内容

select
ahrc.id,

ahrc.question_type,

#从0开始
mht.help_topic_id,



SUBSTRING_INDEX(
#通过逗号个数截取子串
SUBSTRING_INDEX(ahrc.question_type,',',mht.help_topic_id + 1),

',',

#截取子串最后一个元素
-1
) as split_content


from
#业务表
xxxxx ahrc
join mysql.help_topic mht
# help_topic_id 从0开始,逗号不存在时,逗号个数为0,不满足条件
#这里的help_topic_id在查询结果中即代表逗号个数
# 2个逗号有3个元素,需要join上3条记录
on mht.help_topic_id <= (
CHAR_LENGTH(question_type) - CHAR_LENGTH(REPLACE(question_type,',',''))
)


http://www.kler.cn/a/274328.html

相关文章:

  • 使用qemu搭建armv7嵌入式开发环境
  • 基于微信小程序的乡村旅游系统
  • Docker_常用命令详解
  • Python tkinter写的《电脑装配单》和 Html版 可打印 可导出 excel 文件
  • 全脐点曲面当且仅当平面或者球面的一部分
  • react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
  • Redis的安装和部署教程(Windows环境)
  • 全球变暖(蓝桥杯,acwing每日一题)
  • 【DL经典回顾】激活函数大汇总(二十五)(GEGLU附代码和详细公式)
  • 金蝶云星空——插件dll重新发布报错:鏃犳硶鏄剧ず椤甸潰锛屽洜涓哄彂鐢熷唴閮ㄦ湇鍔″櫒閿欒銆�
  • tesseract ocr 安装/调用/训练
  • 使用Java JDBC连接数据库
  • c语言指针(二)
  • 概率统计在AI中的作用
  • Java项目利用Redisson实现真正生产可用高并发秒杀功能 支持分布式高并发秒杀
  • 在线教育平台帮助教培机构打造线上
  • 代码随想录算法训练营第二十八天 | 93.复原IP地址 78.子集 90.子集II
  • IText5填充PDF表单使用自定义字体中文生效而英文和数字不生效?
  • Lua中文语言编程源码-第五节,更改lcorolib.c协程库函数, 使Lua加载中文库关键词(与所有的基础库相关)
  • 构建Helm chart和chart使用管道与函数简介
  • (008)Unity StateMachineBehaviour的坑
  • 自动驾驶决策 - 规划 - 控制 (持续更新!!!)
  • 移除元素(leetcode)
  • 人外周血单核细胞来源树突状细胞(MoDC)的制备(一)
  • 下拉树级带搜索功能
  • 分布式锁的详细解释