我需要将逗号分隔的字符串拆分为第二列 我有下表:
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
答案 0 :(得分:30)
MySQL没有内置的CHARINDEX()
功能。 LOCATE()
将是MySQL的等价物。
使用SUBSTRING_INDEX()
可能是一种更简洁的方法。这样的事情(免责声明:未经测试):
SUBSTRING_INDEX(POS, ',', 1)
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
或使用相同的语法定位。