我是靠谱客的博主 仁爱小鸽子,最近开发中收集的这篇文章主要介绍mysql怎么让表中某一列字段按某字符分割一行变成多行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

注意暂时看不懂的请看下列的解析方法,代码下面有具体解释

SELECT
    a.XH,
    substring_index(
        substring_index(
            a.QZYSBM,
            '、',
            b.help_topic_id + 1
        ),
        '、' ,- 1
    ) AS splitName
FROM
  (SELECT t.XH,t.QZYSBM from t_jcsjzx_dc_rwb t
WHERE t.QZYSBM   like '%、%')as a
JOIN mysql.help_topic b 
ON b.help_topic_id < (
    length(a.QZYSBM) - length(
        REPLACE (a.QZYSBM, '、', '  ')
    ) + 1
) 

具体结果:没分割之前
在这里插入图片描述
分割之后一行变多行
在这里插入图片描述

解析方法:
查询框架
SELECT
xxxx (要展示的字段)
FROM
xxxx (来自那个表的数据,具体表还是查询的临时表)
WHERE
xxxxx (约束规则 以及条件)
ON
xxxxx (约束规则 以及条件)

具体解释:

SELECT    //这行不用管照样这样写,不用改   
    a.XH,//这行是表的id或者主键都一样
    substring_index(   //这行不用管照样这样写,不用改
        substring_index(      //这行不用管照样这样写,不用改
            a.QZYSBM, //这里是你要分割的某一列的字段名称,比如内容是区自然资源和规划局、区公安分局
            '、',   //这个是你表的字段中需要按哪个具体字符分割,比如、,. 等等其他特殊字符。
            b.help_topic_id + 1    //这行不用管照样这样写,不用改
        ),   
        '、' ,- 1          //这行改一下分割字符'、'就行,后面的-1不用管照样这样写,不用改
    ) AS name     //这行不用管照样这样写,不用改
FROM              //这行不用管照样这样写,不用改
  (SELECT t.XH,t.QZYSBM from t_jcsjzx_dc_rwb t  //这里是你自己的数据表名字,
WHERE t.QZYSBM   like '%、%')as a               //或者是查询出来的虚拟临时表
JOIN 
mysql.help_topic b           //这行不用管照样这样写,不用改
ON 
    b.help_topic_id < (   //这行不用管照样这样写,不用改
    length(a.QZYSBM) - length(    //注意这里要改下括号中的字段,请改成你表中需要分割的字段名称
    REPLACE (a.QZYSBM, '、', '  ')  //这行同样改字段名称如a.QZYSBM和需要按哪个分割的字符如'、'
    ) + 1
) 

最后

以上就是仁爱小鸽子为你收集整理的mysql怎么让表中某一列字段按某字符分割一行变成多行的全部内容,希望文章能够帮你解决mysql怎么让表中某一列字段按某字符分割一行变成多行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部