mysql怎么让表中某一列字段按某字符分割一行变成多行

7 篇文章 0 订阅

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

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
) 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值