我有一个名为"匹配"
的mysql表匹配中有5个字段(4个空白列和1个带CSV数据的列) 负载,用户名,username_clean,USER_ID,member_id
在加载字段中有许多行以逗号分隔值(CSV) load列中的值采用以下格式:username,username_clean,user_id,member_id 第一列"加载"
中的4个csv值问题:如何在加载中拆分4个值并将它们放在各自的列中?
请帮忙!先感谢您。 例。我想要以下
|Sara,sara,60,9|
成为: 萨拉| 萨拉| 60 | 9 | < - 4cols而不是1
答案 0 :(得分:1)
UPDATE `match` SET
username=LEFT(`load`,LOCATE(',',`load`)-1),
`load`=SUBSTR(`load`,LOCATE(',',`load`)+1)
;
UPDATE `match` SET
username_clean=LEFT(`load`,LOCATE(',',`load`)-1),
`load`=SUBSTR(`load`,LOCATE(',',`load`)+1)
;
UPDATE `match` SET
user_id=LEFT(`load`,LOCATE(',',`load`)-1),
member_id=SUBSTR(`load`,LOCATE(',',`load`)+1)
;
或
UPDATE `match` SET username=LEFT(`load`,LOCATE(',',`load`)-1);
UPDATE `match` SET `load`=SUBSTR(`load`,LOCATE(',',`load`)+1);
UPDATE `match` SET username_clean=LEFT(`load`,LOCATE(',',`load`)-1);
UPDATE `match` SET `load`=SUBSTR(`load`,LOCATE(',',`load`)+1);
UPDATE `match` SET user_id=LEFT(`load`,LOCATE(',',`load`)-1);
UPDATE `match` SET member_id=SUBSTR(`load`,LOCATE(',',`load`)+1);
由于我的第一次尝试添加了一个逗号,只需运行此
即可UPDATE matchindex SET
username = REPLACE(username,',',''),
username_clean = REPLACE(username_clean,',','')
;
答案 1 :(得分:1)
试试这个:
定义一个函数strSplit:
CREATE FUNCTION strSplit(x varchar(255), delim varchar(12), pos int) returns varchar(255)
return replace(substring(substring_index(x, delim, pos), length(substring_index(x, delim, pos - 1)) + 1), delim, '');
使用此查询:
update match set username=strSplit(load, ',', 1),username_clean=strSplit(load, ',', 2),user_id=strSplit(load, ',', 3),member_id=strSplit(load, ',', 4);