拆分逗号分隔字符串 - >功能db.CHARINDEX不存在

时间:2012-03-31 04:50:48

标签: mysql string function split comma

我需要将逗号分隔的字符串拆分为第二列 我有下表:

CL1     POS                 POS2     LENGHT     ALLELE
1       3015108,3015109              5          A
2       3015110,3015200              10         B
3       3015200,3015300              15         C
4       3015450,3015500              20         D
5       3015600,3015700              15         E

我想将逗号后面的数字拆分成第二列POS2 所以应该那样

CL1     POS                 POS2     LENGHT     ALLELE
1       3015108             3015109  5          A
2       3015110             3015200  10         B
3       3015200             3015300  15         C
4       3015450             3015500  20         D
5       3015600             3015700  15         E

所以我查询了以下内容:

INSERT INTO MyTable (POS2)
SELECT RIGHT(POS, CHARINDEX(',', POS) + 1 ) FROM MyTable ;


 It returns an error : 
 ERROR 1305 (42000): FUNCTION test.CHARINDEX does not exist

2 个答案:

答案 0 :(得分:30)

MySQL没有内置的CHARINDEX()功能。 LOCATE()将是MySQL的等价物。

使用SUBSTRING_INDEX()可能是一种更简洁的方法。这样的事情(免责声明:未经测试):

POS的

SUBSTRING_INDEX(POS, ',', 1)

对于POS2

SUBSTRING_INDEX(POS, ',', -1)


顺便说一句,我可能会误解你想要完成的任务,但看起来你可能想要UPDATE现有行,而不是INSERT新行?类似的东西:

UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1);
UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1);

答案 1 :(得分:3)

MySQL确实有类似的功能:InStr或使用相同的语法定位。