MySQL 将 一行拆分为多个字段

上篇文章将多行合并成一行后已经可以直接从结果中阅读用户填写记录了,但是还是很麻烦,需要去分辨用户提交的内容属于什么。从网上发现了一个很实用的 函数 SUBSTRING_INDEX, 类似 PHP 中的 explode, 将字符串根据指定的字符分割开,提取我们想要的部分,直接拆分成多列。

 

SELECT
  reid,
  /*截取第一个字段*/
  SUBSTRING_INDEX( newdata, ',', 1 ) AS 姓名, 
  /*截取第二个字符*/
  SUBSTRING_INDEX(SUBSTRING_INDEX( newdata, ',', 2 ),',',- 1 ) AS 昵称,
  SUBSTRING_INDEX(
    SUBSTRING_INDEX( newdata, ',', 3 ),
    ',',- 1 
  ) AS 地址,
  SUBSTRING_INDEX(
    SUBSTRING_INDEX( newdata, ',', 4 ),
    ',',- 1 
  ) AS 备注
FROM
  (

  SELECT
    formid,
    reid,
    /*把所有的列合并到一行,通过 逗号 分割*/
    GROUP_CONCAT( DATA ) AS newdata 
  FROM
    (
    /*字段表联合结果表*/
    SELECT
      t_data.reid AS reid,
      t_data.`data`,
      t_data.type,
      t_field.title AS title,
      t_field.formid AS formid 
    FROM
      ims_rooit_class_data AS t_data
      LEFT JOIN ims_rooit_class_fields AS t_field ON t_data.fieldid = t_field.fieldid 
    WHERE
      t_field.type != 'timerange' 
    ) AS t_join 
  GROUP BY
  reid 
  ) AS t_join2

images

直接就是我们想要的显示方式,方便阅读

请我喝杯咖啡吧~

支付宝
微信