Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/09/2012, 12:05
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Dividir el contenido de un campo en dos campos

Hola de nuevo gandalf_2706:

Te voy a pedir de favor, que en el futuro, NO REVIVAS TEMAS ANTIGUOS, independientemente que sean preguntas que tu hayas lanzado... este tema lo comenzaste hace más de un mes y en realidad ya estaba resuelto, así es que aunque se trate de un tema relacionado, lo correcto es que abras un nuevo tema y pongas la referencia hacia el tema relacionado. Ojo para la próxima.

MySQL proporciona un set bastante rico de funciones para el manejo de cadenas, para resolver tu problema era cuestión de que investigaras un poco en estas funciones para poder dar con alguna que te sirviera. En realidad tienes muchas maneras para validar lo que quieres, se me ocurre por ejemplo que utilices la función SUBSTRING_INDEX para ir "recortando" la cadena de busqueda... checa este script

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+-------------------+
  3. | id   | coordenadas       |
  4. +------+-------------------+
  5. |    1 | 9.3052,-79.9558,7 |
  6. |    2 | 89.7465,-64.0826  |
  7. |    3 | -50.2323          |
  8. +------+-------------------+
  9. 3 rows in set (0.02 sec)

Observa que en el primero de los casos tengo 2 comas, en el segundo sólo una y en el tercero no tengo ninguna... para separar cada cadena utilizo la función SUBSTRING_INDEX:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     -> coordenadas,
  3.     -> SUBSTRING_INDEX(coordenadas, ',', 1) latitud,
  4.     -> SUBSTRING_INDEX(SUBSTRING(coordenadas,
  5.     -> LENGTH(SUBSTRING_INDEX(coordenadas, ',', 1)) + 2), ',', 1) longitud,
  6.     -> SUBSTRING_INDEX(SUBSTRING(coordenadas,
  7.     -> LENGTH(SUBSTRING_INDEX(coordenadas, ',', 2)) + 2), ',', 1) zoom_mapa
  8.     -> FROM tabla;
  9. +-------------------+----------+----------+-----------+
  10. | coordenadas       | latitud  | longitud | zoom_mapa |
  11. +-------------------+----------+----------+-----------+
  12. | 9.3052,-79.9558,7 | 9.3052   | -79.9558 | 7         |
  13. | 89.7465,-64.0826  | 89.7465  | -64.0826 |           |
  14. | -50.2323          | -50.2323 |          |           |
  15. +-------------------+----------+----------+-----------+
  16. 3 rows in set (0.00 sec)

la idea como te dije es "recortar" la cadena al hacer esto

Código:
SUBSTRING_INDEX(coordenadas, ',', 1)
SUBSTRING_INDEX(coordenadas, ',', 2)
le estás indicando qué parte de la cadena original tienes que eliminar:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     -> coordenadas,
  3.     -> SUBSTRING_INDEX(coordenadas, ',', 1) uno,
  4.     -> SUBSTRING_INDEX(coordenadas, ',', 2) dos
  5.     -> FROM tabla;
  6. +-------------------+----------+------------------+
  7. | coordenadas       | uno      | dos              |
  8. +-------------------+----------+------------------+
  9. | 9.3052,-79.9558,7 | 9.3052   | 9.3052,-79.9558  |
  10. | 89.7465,-64.0826  | 89.7465  | 89.7465,-64.0826 |
  11. | -50.2323          | -50.2323 | -50.2323         |
  12. +-------------------+----------+------------------+
  13. 3 rows in set (0.00 sec)

Esta sería una forma genérica de separar cualquier número de items.

Hay otras formas para hacer esto mismo, es posible que mejores que esta, es cuestión que continúes investigando.

Saludos
Leo.