zoukankan      html  css  js  c++  java
  • mysql-一行分隔成多行数据

    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次出现时在它后面的所有的数据。

  • 相关阅读:
    L3-013. 非常弹的球
    L2-020. 功夫传人
    L1-039. 古风排版
    Innobackup备份过程
    MySQL物理备份的过程
    数据库表设计
    MySQL启动排错
    redo的类型和作用
    描述undo的三个作用
    redo log和binlog的纠缠
  • 原文地址:https://www.cnblogs.com/lantuanqing/p/11284487.html
Copyright © 2011-2022 走看看