2012-03-31 7 views
16

Ich brauche Komma getrennte Zeichenfolge in eine zweite Spalten zu teilen Ich habe die folgende Tabelle:Split Komma getrennte Zeichenfolge -> FUNKTION db.CHARINDEX existiert nicht

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 

ich die Zahlen nach dem geteilt werden soll Komma in eine zweite Kolonne POS2 So sollte es, dass wie

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 

So abgefragt ich habe folgendes:

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 

Antwort

27

MySQL hat keine eingebaute CHARINDEX() Funktion. LOCATE() wäre das MySQL-Äquivalent.

Die Verwendung von SUBSTRING_INDEX() könnte eine prägnantere Möglichkeit sein, dies zu tun. So etwas wie dieses (Disclaimer: ungetestet):

SUBSTRING_INDEX(POS, ',', 1) für POS

SUBSTRING_INDEX(POS, ',', -1) für POS2


Als Nebenwirkung kann ich sein Missverständnis, was Sie versuchen zu erreichen, aber es sieht aus wie Vielleicht möchten Sie UPDATE bestehende Zeilen, nicht INSERT neue? Etwas wie:

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

WOW super danke! – madkitty

3

MySQL hat eine ähnliche Funktion: InStr oder für die gleiche Syntax liegen.

Verwandte Themen