
[RESUELTO] Partir una cadena ??
#1
Escrito 21 abril 2010 - 10:16
Y DE ANTEMANO GRACIAS POR LAS IDEASW Y APORTES QUE HAGAN
se puede partir una cadena de texto en mysql ???
esto es
tengo una base que entre otras cosas tiene un campo nombre
pero cuando lo capturaron capturaron todo hay
ahora kieren una comparacion con los datos por separados
esto es kieren que se compare por separado
para pronto como puedo hacer un update o algo asi a la base para que
en lugar de tener un campo nombre que diga " Arroyo gonzalez jonathan"
tenga tres cmapos que digan
paterno "arroyo"
Materno "gonzalez"
Nombre "jonathan"
digo aki el destalles es que no podria usar un mid o algo asi por que no todas las cadenas tienen el mismo largo
necesitaria que el espacio " " fuera reconocido como el separador
Alguna idea ???
#3
Escrito 21 abril 2010 - 11:10
pero el materno me lo regresa con el paterno materno
( por que los valores 1, 2, -1 ?? )
yo me estava haciendo una mental con algo asi a ver que opinan
SELECT cuenta.nombre, mid( cuenta.nombre,1,instr(cuenta.nombre," ") )AS paterno, mid( cuenta.nombre, (instr(cuenta.nombre," ")+2) ,20)AS materno FROM cuenta
#4
Escrito 21 abril 2010 - 11:12

#6
Escrito 21 abril 2010 - 11:41
muchas muchas gracias
pero como puedo incluir esto en un UPDATE para agregar estos campos a la tabla ?
( solo se hacer consultas nunca he hecho updates )
#7
Escrito 21 abril 2010 - 11:45
UPDATE Clientes SET Paterno = SUBSTRING_INDEX(`nombre` , ' ', 1 ), Materno = SUBSTRING_INDEX(SUBSTRING_INDEX( `nombre` , ' ', 2 ),' ',-1), Nombre_pila = SUBSTRING_INDEX(`nombre` , ' ', -1)
Aquí lo haces especificando un cliente único:
UPDATE Clientes SET Paterno = SUBSTRING_INDEX(`nombre` , ' ', 1 ), Materno = SUBSTRING_INDEX(SUBSTRING_INDEX( `nombre` , ' ', 2 ),' ',-1), Nombre_pila = SUBSTRING_INDEX(`nombre` , ' ', -1) WHERE cli_id = 150
Saludos.
#8
Escrito 21 abril 2010 - 11:47
#9
Escrito 21 abril 2010 - 11:54
GRACIAS MASTER
No hay de qué, avisas si consideras el tema Resuelto

Saludos.
#10
Escrito 21 abril 2010 - 12:18
ENECUMENE para resolverlo propuso el uso de substring
io estaba buscandole con mid
pero no seria lo mismo
substring ( str, pos, len )
que
mid ( str, pos, len )
o por que husar substring ??
#11
Escrito 21 abril 2010 - 12:42
Solo me keda una duda EXISTENCIAL
ENECUMENE para resolverlo propuso el uso de substring
io estaba buscandole con mid
pero no seria lo mismo
substring ( str, pos, len )
que
mid ( str, pos, len )
o por que husar substring ??
Realmente son sinonimos, de aquí lo tome
http://dev.mysql.com...-functions.html
#12
Escrito 11 enero 2011 - 01:56
ya esta resuelto el tema
pero se puede hacer un update con un case ???
algo asi como esto
UPDATE base SET inicial = CASE WHEN mid(paterno,1,6)="DE LA " THEN =7 WHEN MID(paterno,1,3)="DE " THEN =4 WHEN MID(paterno,1,6) = "DE LA " THEN =7 WHEN mid(paterno,1,3) = "DE " THEN =4 WHEN MID(paterno,1,2) = "Y " THEN =3 WHEN MID(paterno,1,4) = "DEL " THEN =5 WHEN MID(paterno,1,10) = "MA DE LOS " THEN =11 WHEN MID(paterno,1,9) = "MA DE LA " THEN =10 WHEN MID(paterno,1,7) = "MA DEL " THEN =8 WHEN MID(paterno,1,12) = "MARIA DE LA " THEN =13 WHEN MID(paterno,1,9) = "MARIA DE " THEN =10 WHEN MID(paterno,1,10) = "MARIA DEL " THEN =11 WHEN MID(paterno,1,6) = "MARIA " THEN =7 WHEN MID(paterno,1,5) = "JOSE " THEN =6 WHEN MID(paterno,1,8) = "JOSE DE " THEN =9 ELSE =1 END CASE
#13
Escrito 11 enero 2011 - 02:11
#14
Escrito 11 enero 2011 - 02:13
voy a checar la estructura
por que no me funciona asi como lo puse
#15
Escrito 31 marzo 2011 - 11:31
if(instr(nom_personal," ")>0,right(nom_personal,(length(nom_personal)-instr(nom_personal," "))),"") as Nombre2