2012-03-31 14 views
16

necesito para dividir cadena delimitada por comas en una segunda columnas que tiene la siguiente tabla:comas de Split cadena delimitada -> FUNCIÓN db.CHARINDEX no existe

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 

Quiero dividir los números después del coma en una segunda columna POS2 lo tanto, debe gustaría que

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 

Así que me haya interrogado el siguiente:

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 

Respuesta

27

MySQL no tiene una función incorporada CHARINDEX(). LOCATE() sería el equivalente de MySQL.

El uso de SUBSTRING_INDEX() podría ser una forma más concisa de hacerlo. Algo como esto (disclaimer: no probado):

SUBSTRING_INDEX(POS, ',', 1) para POS

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


Como acotación al margen, que puede ser malentendido lo que estamos tratando de lograr, pero parece es posible que desee UPDATE filas existentes, no INSERT nuevas? Algo así como:

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

WOW AWESOME GRACIAS! – madkitty

3

MySQL tiene una función similar: InStr o para la misma sintaxis de localizar.

Cuestiones relacionadas