mysql将某个字段有分隔符号分隔成多行数据

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

  

a.需要查询的表
b.辅助表:其需要有一个字段为数字类型且数据为连续,从0开始.如mysql.help_topic表中的help_topic_id字段
a表与b表关联
符合a与b表的数据形成迪卡尔积
然后对数据结果进行处理
关联条件
b.help_topic_id < (
length(a.name) - length(
REPLACE (a.name, ',', '')
) + 1
)
表示 辅助表中的help_topic_id的值小于a表中name中的分隔符号,的数量的值
结果字段处理第一个函数

SUBSTRING_INDEX(str,delim,count)
str:要做处理的字符串对象。
delim:处理时用来做标识符的东西。
count:怎么取值。
count是正值:顺着数,标识符第count次出现时在它前面的所有的数据。
count是负值:倒着数,标识符第count次出现时在它后面的所有的数据。

mysql-一行分隔成多行数据的更多相关文章

  1. mysql根据逗号将一行数据拆分成多行数据

    mysql根据逗号将一行数据拆分成多行数据 原始数据 处理结果展示 DDL CREATE TABLE `company` ( `id` ) DEFAULT NULL, `name` ) DEFAULT ...

  2. XML转换成TXT行数据的Java程序

    ZKe ------------------- XML数据的一个块内的所有属性,转换成TXT文件的一行.众所周知XML文件是通过类似HTML的标签进行数据的定义如图所示 属性由id, article, ...

  3. 查看MySQL语句变量了多少行数据

    explain MySQL语句 列如 explain SELECT * FROM 表名 WHERE id=1;

  4. MySQL一次插入多行数据

    CREATE TABLE `viewhistory` ( `viewid` ) NOT NULL AUTO_INCREMENT, `uid` ) NOT NULL, `video` ) NOT NUL ...

  5. SQL 逗号分隔将一行拆成多行

    and number<=len(a.KOrderID) and type=)=',')

  6. sql根据字符将一行拆成多行

    SELECT B.value FROM ( SELECT [value] = CONVERT(xml,'<root><v>' + REPLACE('A,C,D', ',', ' ...

  7. MySQL入门(7)——表数据的增、删、改

    MySQL入门(7)--表数据的增.删.改 插入数据 使用INSERT···VALUES语句插入数据 INSERT语句最常用的格式是INSERT···VALUES: INSERT [LOW_PRIOR ...

  8. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...

  9. Oracle一列的多行数据拼成一行显示字符

    Oracle一列的多行数据拼成一行显示字符   oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数.    www.2cto.com   先介绍:WMSYS.WM_CO ...

随机推荐

  1. Mongo导出、导入

    1.mongodb 数据导出: connection options: /h, /host:<hostname> mongodb host to connect to (setname/h ...

  2. sublime-1

    1.提示找不到margo go get github.com/DisposaBoy/MarGo(该工具已经被作者清空了,大部分人在这一步就被卡住了) 如果你也是在第二步卡住了,那么可以按照我的方法进行 ...

  3. VSCode中行数与代码之间用点点点代替

    在settings.json中添加一行 "editor.renderWhitespace": "all"

  4. 【Http】队头阻塞(Head of line blocking)多路复用(Multiplexing)

        图中第一种请求方式,就是单次发送request请求,收到response后再进行下一次请求,显示是很低效的. 于是http1.1提出了管线化(pipelining)技术,就是如图中第二中请求方 ...

  5. Mybatis基于接口注解配置SQL映射器(一)

    上文已经讲解了基于XML配置的SQL映射器,在XML配置的基础上MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码. Mybat ...

  6. vue中引入路由,如果你懒得写那么

    可以npm i vue-router --save,项目中自动给你写好,vuex也可以

  7. iOS 技能图谱

    # iOS 技能图谱## 编程语言 - Swift - Objective-C - C++/C - JavaScript ## 操作系统 - Mac OSX - iOS - watchOS - tvO ...

  8. Mybatis笔记 - SQL标签方法

    Mpper.xml映射文件中定义了操作数据库的sql,并且提供了各种标签方法实现动态拼接sql.每个sql是一个statement,映射文件是mybatis的核心. 一.内容标签 1.NamePlac ...

  9. SQL server 2012序列号 注册码

    企业核心版: FH666-Y346V-7XFQ3-V69JM-RHW28 商业智能版: HRV7T-DVTM4-V6XG8-P36T4-MRYT6 开发版: YQWTX-G8T4R-QW4XX-BVH ...

  10. 关闭禁用 Redis 危险命令

    Redis 的危险命令主要有: flushdb,清空数据库 flushall,清空所有记录,数据库 config,客户端连接后可配置服务器 keys,客户端连接后可查看所有存在的键,当 redis k ...