2012-03-31 13 views
16

ho bisogno di dividere virgola stringa delimitata in una seconda colonna Ho la seguente tabella:Split virgola stringa delimitata -> FUNZIONE db.CHARINDEX non esiste

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 

voglio dividere i numeri dopo la virgola in una seconda colonna POS2 Quindi vorrei che

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 

Così ho interrogato il seguente:

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 

risposta

27

MySQL non ha una funzione integrata CHARINDEX(). LOCATE() sarebbe l'equivalente di MySQL.

Utilizzare SUBSTRING_INDEX() potrebbe essere un modo più succinto di farlo. Qualcosa di simile (disclaimer: non testata):

SUBSTRING_INDEX(POS, ',', 1) per POS

SUBSTRING_INDEX(POS, ',', -1) per POS2


Per inciso, mi può essere equivoco quello che stai cercando di realizzare, ma sembra potresti volere UPDATE righe esistenti, non nuove INSERT? Qualcosa di simile:

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

GRAZIE GRAZIE! – madkitty

3

MySQL ha ancora una funzione simile: InStr o per la stessa sintassi Locate.

Problemi correlati