Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Dividir un campo en dos en MySQL

Estas en el tema de Dividir un campo en dos en MySQL en el foro de Mysql en Foros del Web. Buenos dias, La verdad no se mucho de mysql y quisiera que me ayuden..!!! Tengo un campo en mi base de datos llamado Telefonos, en ...
  #1 (permalink)  
Antiguo 08/10/2012, 11:20
 
Fecha de Ingreso: octubre-2012
Mensajes: 11
Antigüedad: 11 años, 6 meses
Puntos: 0
Mensaje Dividir un campo en dos en MySQL

Buenos dias,

La verdad no se mucho de mysql y quisiera que me ayuden..!!!

Tengo un campo en mi base de datos llamado Telefonos, en este campo se almacenan el número convencional y el número celular de cada cliente por ejemplo ('celular/convencional') en este caso seria ('091225447/022478956') y quiero que este campo se dividiera en 2 campos uno celular y otro convencional.

El problema es cuando existe 2 o mas números por ejemplo ('091225447/095214567/022745142') o a su ves ('022745142/094512784'); el punto es como reconocer si es celular o convencional y enviarlo a cada campo..?? adicionalmente puede estar dividido por cualquier caracter / * - + _ - ; ,

Si les sirve de ayuda en mi pais el celular empieza con 09 y el convencional con 02 por ahi puede ser la solucion.


Gracias de antemano por su ayuda

Última edición por Radamanthys91; 08/10/2012 a las 11:25
  #2 (permalink)  
Antiguo 08/10/2012, 12:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Dividir un campo en dos en MySQL

Yo te preguntaría por qué quieres separar lo que está junto; cuál es su función. Ya te digo que ese campo multivaluado (varios teléfonos distintos en una columna) es un error de diseño de bases de datos.
Tu primer problema, pues, es que lo que dices, con los datos que dices, es imposible resolverlo. Me explicaré. Si tú creas dos campos, uno para celular y otro para convencional, ¿dónde pondrás los dos convencionales que tienes en este registro de ejemplo ('091225447/095214567/022745142'). Tal vez piensas guardar el campo convencional esto '091225447/095214567' y en el celular 022745142. Seguirás teniendo dos teléfonos en un registro. Quizás tu solución es crear una tercera tabla donde guardar los teléfonos relacionados con un cliente. Primero debes resolver ese punto, que por lo demás es el más importante. Luego vendrá lo otro.
El cambio de uno de todos estos signos ( / * - + _ - ; ,) a uno, por ej. '/' mediante reemplazo podrías ser un primer paso de la solución, pero creo que luego lo mejor sería crear una nueva tabla relacionada, en la que cada teléfono, sea celular o convencional está relacionado con el id del cliente. Aunque deberías decirnos antes qué te ha llevado a plantearte el cambio. Responde primero a la pregunta de por qué necesitas separarlos; así podríamos buscar una solución que se acomode a tus necesidades.
  #3 (permalink)  
Antiguo 17/10/2012, 08:51
 
Fecha de Ingreso: octubre-2012
Mensajes: 11
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Dividir un campo en dos en MySQL

En fin muchachos investigando y con mis conocimientos logre resolver en un 95% mi problema

Lo realice mediante un update a la base de datos

-- esto es para cuando existe un solo numero

update tabla set campo3=campo1 where ((SUBSTRING(campo1,1,2)='09'or SUBSTRING(campo1,1,2)='08')and LENGTH(campo1)>=9);

ejemplo: '092528661'

-- si esta dibidido por algun caracter especial lo siguiente:

UPDATE tabla SET campo3 = SUBSTRING(campo1,11,10) where (SUBSTRING(campo1,10,1)='/' or SUBSTRING(campo1,10,1)=' 'or SUBSTRING(campo1,10,1)=';');

Ejemplo : '022958486/092528661'

-- y para finalizar enviar el numero convencional

UPDATE tabla SET campo3 = SUBSTRING(campo1,1,9) where (SUBSTRING(Telefonos,1,2)='02')and (SUBSTRING(Telefonos,10,1)='/' or SUBSTRING(Telefonos,10,1)=''or SUBSTRING(Telefonos,10,1)=';');


al final la bla quedaria:

--------------------------------------------------------------
campo1..........................| campo2....| campo3
--------------------------------------------------------------
092528661....................|..................| 092528661
--------------------------------------------------------------
022958186;094195911 |022958486| 094195911
--------------------------------------------------------------
026541784....................|026541784

Última edición por Radamanthys91; 18/10/2012 a las 07:23

Etiquetas: dividir, sql, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:37.