将具有csv值的mysql列拆分为各自的字段

将具有csv值的mysql列拆分为各自的字段,mysql,csv,split,Mysql,Csv,Split,我有一个名为“match”的mysql表 匹配中有5个字段(4个空白列和一个带有CSV数据的列) 加载、用户名、用户名、用户id、成员id “加载”字段中有许多行具有逗号分隔值(CSV) “加载”列中的值采用以下格式:用户名、用户名、用户id、成员id 第一列“加载”中有4个csv值 问题:如何拆分load中的4个值并将它们放置在各自的列中 请帮忙!先谢谢你。 例子。我想要以下 |Sara,sara,60,9| 成为: 萨拉| 萨拉| 60| 9| 或 因为我第一次尝试添加了逗号,所以只需运行

我有一个名为“match”的mysql表

匹配中有5个字段(4个空白列和一个带有CSV数据的列) 加载、用户名、用户名、用户id、成员id

“加载”字段中有许多行具有逗号分隔值(CSV) “加载”列中的值采用以下格式:用户名、用户名、用户id、成员id 第一列“加载”中有4个csv值

问题:如何拆分load中的4个值并将它们放置在各自的列中

请帮忙!先谢谢你。 例子。我想要以下

|Sara,sara,60,9|
成为: 萨拉| 萨拉| 60| 9| 或

因为我第一次尝试添加了逗号,所以只需运行以下命令

UPDATE matchindex SET
    username = REPLACE(username,',',''),
    username_clean = REPLACE(username_clean,',','')
;
试试这个:
定义函数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);

表中有多少行?很多。超过30K+的sql在您的第一个给出错误您的sql语法有错误;查看与您的MySQL服务器版本对应的手册,了解要在“匹配集username=LEFT(load,LOCATE(‘,’,load)),load=SUBSTR附近使用的正确语法(第1行的load,LOCAT'出现错误#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行的“match SET username=LEFT(load,LOCATE(',',load))”附近使用的正确语法match是用于全文操作的函数()。我在单词
match
周围添加了反引号。请再试一次。仍然不走运。两个想法都返回了错误#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“load,LOCATE(',',load)),load=SUBSTR(load,LOCATE(',',load)+1)附近使用的正确语法'在第2行,加载也是一个保留字。#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在'match set username=strSplit(LOAD',,',1',username_clean=strSplit(LOAD',,',2'附近使用的正确语法),“在第1行#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行“匹配集username=strSplit(load,,,,,,,”、username_clean=strSplit(load,,,,,,,,”附近使用的语法是否正确?”您正在使用SQL或MySQL?
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);