把一个字段,拆分成多个字段并保存到表:关键SUBSTRING_INDEX
前言
背景:现网的同事导出了一个表的个别字段的全量数据给我,但是我准备导入到本地表的时候分辨付出字段,每一行的数据分割如下图。
提示:以下是本篇文章正文内容,下面案例可供参考
一、新建准备导入数据的表的备份表(用完可删)
备份表只有一个字段,用来导入数据如下。
二、SQL操作
SELECT info FROM teleaaa_aa_aa_aaaa_bak;
SELECT * FROM teleaaa_aa_aa_aaaa;
/*
SUBSTRING_INDEX(str, delim, count)
str:要截取的字段;
delim 关键字;
count:正数为从左往右数关键词出现的次数,
负数为从右往左数关键词出现的次数
*/
# 我上图截图中有4个字段,我这里用了3个
SELECT SUBSTRING_INDEX(info,'|',1) as UserID,
SUBSTRING_INDEX(SUBSTRING_INDEX(info,'|',-2),'|',1) as AreaCode,
SUBSTRING_INDEX(info,'|',-1) as LanMac
FROM teleaaa_aa_aa_aaaa_bak;
# 把查出的数据插入到需要用的表中,指定字段
INSERT INTO teleaaa_aa_aa_aaaa(UserID,AreaCode,LanMac)
(SELECT SUBSTRING_INDEX(info,'|',1) as UserID,
SUBSTRING_INDEX(SUBSTRING_INDEX(info,'|',-2),'|',1) as AreaCode,
SUBSTRING_INDEX(info,'|',-1) as LanMac
FROM teleaaa_aa_aa_aaaa_bak);
总结
亲测可用,如有疑问,欢迎评论区讨论。