我需要将逗号分隔的字符串拆分为第二列,我具有下表:
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
MySQL没有内置CHARINDEX()功能。LOCATE()相当于MySQL。
CHARINDEX()
LOCATE()
使用SUBSTRING_INDEX()可能是更简洁的方法。这样的事情(免责声明:未经测试):
SUBSTRING_INDEX()
SUBSTRING_INDEX(POS, ',', 1) 用于POS
SUBSTRING_INDEX(POS, ',', 1)
SUBSTRING_INDEX(POS, ',', -1) 用于POS2
SUBSTRING_INDEX(POS, ',', -1)
顺便说一句,我可能会误解您要完成的工作,但看起来您可能想要UPDATE现有的行,而不是INSERT新的行?就像是:
UPDATE
INSERT
UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1); UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1);