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

【问题解决】mysql 数据库字符串分割之后多行输出方法

背景:

项目需要从一张表查询出来数据插入到另一张表,其中有一个字段是用逗号分隔的字符串,需要多行输入到另一张表,那么这个如何实现呢

方案:

下面先粘贴下sql语句:

select SUBSTRING_INDEX(SUBSTRING_INDEX(v1.name, ',', b.help_topic_id + 1), ',', - 1) AS exhibit,SUBSTRING_INDEX(SUBSTRING_INDEX(v1.sku, ',', b.help_topic_id + 1), ',', - 1) AS skut
from test v1 JOIN mysql.help_topic AS b ON b.help_topic_id < (length(v1.name) - length(REPLACE(v1.name, ',', '')) + 1);

参数解释

1.SUBSTRING_INDEX(str, delimiter, count)

    参数解释

    str:必填。STRING类型。待截取的字符串

    separator:必填。STRING类型的分隔符

    count:必填。INT类型。指定分隔符位置

2.mysql.help_topic本身是mysql的一张信息表,用来存储各种注释等帮助信息

同时它有一个特点,拥有一个自增为1的id属性--help_topic_id 并且 拥有固定数量的数据

语句解释:

1.查询v1表的sku字段,按照逗号从左开始取b.help_topic_id + 1的值

SUBSTRING_INDEX(v1.sku, ',', b.help_topic_id + 1)

2.先从做开始截取对应的值,在此基础上从右往左在截取一位

SUBSTRING_INDEX(SUBSTRING_INDEX(v1.sku, ',', b.help_topic_id + 1), ',', - 1) AS skut

3.这个意思是关联表help_topic,help_topic_id长度取到v1.name字段用逗号分隔的数量的最大值

mysql.help_topic AS b ON b.help_topic_id < (length(v1.name) - length(REPLACE(v1.name, ',', '')) + 1)

http://www.lryc.cn/news/112397.html

相关文章:

  • flutter开发实战-时间显示刚刚几分钟前几小时前
  • 导出LLaMA等LLM模型为onnx
  • 回顾 OWASP 机器学习十大风险
  • ENSP软件的基本使用命令(第三十一课)
  • 五、FreeRTOS数据类型和编程规范
  • 码出高效_第二章 | 面向对象_上
  • 大学生课设实训|基于springboot的在线拍卖系统
  • 论文阅读 - Social bot detection in the age of ChatGPT: Challenges and opportunities
  • FPGA优质开源项目 - UDP RGMII千兆以太网
  • 学C的第三十二天【动态内存管理】
  • 聊聊elasticsearch的data-streams
  • unreal engine c++ 创建tcp server, tcp client
  • 24届华东理工大学近5年自动化考研院校分析
  • 初识集合和背后的数据结构
  • 选择适合你的数据可视化工具:提升洞察力的关键决策
  • H5中的draggable
  • 搭建SVN服务器
  • OpenCV之信用卡识别实战
  • Detector定位算法在FPGA中的实现——section1 原理推导
  • 心电信号去噪:方法与应用
  • 睡眠助手/白噪音/助眠夜曲微信小程序源码下载 附教程
  • Spring Cloud常见问题处理和代码分析
  • debian怎么修改man help为中文,wsl怎么修改显示语言为中文
  • k8s概念-亲和力与反亲和力
  • 【数据结构】实现单链表的增删查
  • Vue2 第二十节 vue-router (四)
  • 第三章 图论 No.1单源最短路及其综合应用
  • ❤ npm不是内部或外部命令,也不是可运行的程序 或批处理文件
  • 关于Godot游戏引擎制作流水灯
  • C语言 函数指针详解