Ir al contenido


Foto

[RESUELTO] Partir una cadena ??


  • Por favor identifícate para responder
14 respuestas en este tema

#1 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 21 abril 2010 - 10:16

Saludos a todos
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 ???



  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 21 abril 2010 - 10:51

Prueba con lo siguiente:



mysql
  1.     `nombre` ,
  2.     SUBSTRING_INDEX(`nombre` , ' ', 1 ) AS Paterno,
  3.     SUBSTRING_INDEX(`nombre` , ' ', 2 ) AS Materno,
  4.     SUBSTRING_INDEX(`nombre` , ' ', -1) AS Nombre_Pila
  5.     FROM Clientes



Saludos.

  • 0

#3 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 21 abril 2010 - 11:10

funciona a la perfeccion para el paterno y el nombre de pila
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


sql
  1. SELECT
  2. cuenta.nombre,
  3. mid(
  4. cuenta.nombre,1,instr(cuenta.nombre," ") )AS paterno,
  5.  
  6. mid(
  7. cuenta.nombre, (instr(cuenta.nombre," ")+2) ,20)AS materno
  8.  
  9.  
  10.  
  11. FROM
  12. cuenta



  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 21 abril 2010 - 11:12

Pues tendrías que verificar si hay doble espacio entre el paterno y materno ;).
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 21 abril 2010 - 11:20

Ah ya vi el problema, intentalo así:



mysql
  1.     `nombre` ,
  2.     SUBSTRING_INDEX(`nombre` , ' ', 1 ) AS Paterno,
  3.     SUBSTRING_INDEX(SUBSTRING_INDEX( `nombre` , ' ', 2 ),' ',-1) AS Materno,
  4.     SUBSTRING_INDEX(`nombre` , ' ', -1) AS Nombre_Pila
  5.     FROM Clientes



:$
  • 0

#6 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 21 abril 2010 - 11:41

perfectisimo master

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 )
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 21 abril 2010 - 11:45

De esta manera lo haces todos de un tiro:



mysql
  1. 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:



mysql
  1. 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.
  • 0

#8 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 21 abril 2010 - 11:47

GRACIAS MASTER
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 21 abril 2010 - 11:54

GRACIAS MASTER


No hay de qué, avisas si consideras el tema Resuelto (y)

Saludos.
  • 0

#10 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 21 abril 2010 - 12:18

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 ??
  • 0

#11 eduarcol

eduarcol

    Advanced Member

  • Moderadores
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

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
  • 0

#12 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 11 enero 2011 - 01:56

ya se ya se
ya esta resuelto el tema
pero se puede hacer un update con un case ???

algo asi como esto



sql
  1. UPDATE base
  2. SET inicial =
  3. CASE
  4.   WHEN mid(paterno,1,6)="DE LA " THEN =7
  5.   WHEN MID(paterno,1,3)="DE " THEN =4
  6.   WHEN MID(paterno,1,6)  = "DE LA " THEN =7
  7.   WHEN mid(paterno,1,3)  = "DE "          THEN =4
  8.   WHEN MID(paterno,1,2)  = "Y "          THEN =3
  9.   WHEN MID(paterno,1,4)  = "DEL "        THEN =5
  10.   WHEN MID(paterno,1,10) = "MA DE LOS "  THEN =11
  11.   WHEN MID(paterno,1,9)  = "MA DE LA "    THEN =10
  12.   WHEN MID(paterno,1,7)  = "MA DEL "      THEN =8
  13.   WHEN MID(paterno,1,12) = "MARIA DE LA " THEN =13
  14.   WHEN MID(paterno,1,9)  = "MARIA DE "    THEN =10
  15.   WHEN MID(paterno,1,10) = "MARIA DEL "  THEN =11
  16.   WHEN MID(paterno,1,6)  = "MARIA "      THEN =7
  17.   WHEN MID(paterno,1,5)  = "JOSE "        THEN =6
  18.   WHEN MID(paterno,1,8)  = "JOSE DE "    THEN =9
  19. ELSE =1
  20.   END CASE


  • 0

#13 poliburro

poliburro

    Advanced Member

  • Moderadores
  • PipPipPip
  • 4.945 mensajes
  • LocationMéxico

Escrito 11 enero 2011 - 02:11

Claro. Es posible
  • 0

#14 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 11 enero 2011 - 02:13

ok



voy a checar la estructura

por que no me funciona asi como lo puse
  • 0

#15 Beto Chavez

Beto Chavez

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 31 marzo 2011 - 11:31

Utiliza esto:

if(instr(nom_personal," ")>0,right(nom_personal,(length(nom_personal)-instr(nom_personal," "))),"") as Nombre2


  • 0