原创

mysql根据特定字符将一行数据拆分成多行数据

温馨提示:
本文最后更新于 2022年12月27日,已超过 862 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

mysql根据特定字符将一行数据拆分成多行数据

数据分割sql脚本:

其中 t_account_usage 可以替换成想要分隔的数据库表
其中 account_usage_type 可以替换成 想要分割的字段

select substring_index(
               substring_index(u.account_usage_type, ',', b.help_topic_id + 1),
               ',',
               -1
           ) as account_usage_type
from t_account_usage u
         join mysql.help_topic as b
              on b.help_topic_id < (
                          length(u.account_usage_type)
                          -
                          length(replace(u.account_usage_type, ',', '')) + 1
                  );

命令行解释

help_topic

help_topic本身是Mysql一个帮助解释注释表,用于解释Mysql各种专有名词,由于这张表数据ID是从0顺序增加的,方便我们用于计数。

需要注意:但是8.0.17版本的只有686条数据,超过这个数字,我们就需要己自定义一张表,可以用做计数的临时表,查询的语句只会用help_topic计数,超出的部分其实都是脏数据

file

b.help_topic_id < 获取分隔后的总行数

这个语句其实是一个遍历,help_topic_id 从0开始递增到

按照顺序截取,先截取第 n 个分隔符之前的所有字符,再截取字符串最后一位

substring_index

substring_index(str,delim,count)函数:用来截取字符串

参数名称 解释
str 需要被拆分的字符串
delim 分割符,通过某字符进行拆分
count 当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。

replace

replace( str, from_str, to_str)函数:用来替换字符串

参数名称 解释
str 需要进行替换的字符串
from_str 需要被替换的字符串
to_str 需要替换的字符串

length

length(str):获取字符串的长度

正文到此结束