Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/08/2014, 13:31
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Dividir 1 campo en dos campos

Bueno, lo que te puedo proponer es esto:
1) Preventivamente, copia la tabla entera como respaldo:
Código MySQL:
Ver original
  1. CREATE TABLE nuevatabla LIKE tabla;
  2. INSERT INTO nuevatabla
  3. FROM tabla;
2) Agregale una columna a la tabla origen para almacenar la cantidad. La misma debe ser de tipo INT UNSIGNED, y podrías indicar DEFAULT '0', para que tome un valor desde el inicio, en el caso de altas de productos sin indicar cantidades.
Sería algo así:
Código MySQL:
Ver original 
3) Usando la función SUBSTRING_INDEX(), realiza esto:
Código MySQL:
Ver original
  1. SET cantidad = CAST(SUBSTRING_INDEX(medicamentos, '#', -1) AS UNSIGNED);
4) Realiza la misma tarea con el campo origen de esta forma:
Código MySQL:
Ver original
  1. SET cantidad = SUBSTRING_INDEX(medicamentos, '#', 1);
TE muestro cual es el funcionamiento de SUBSTRING_INDEX, con un ejemplo de un texto:
Código MySQL:
Ver original
  1. mysql> SELECT SUBSTRING_INDEX('medicamento # 12', '#', -1) valor;
  2. +-------+
  3. | valor |
  4. +-------+
  5. |  12   |
  6. +-------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT SUBSTRING_INDEX('medicamento # 12', '#', 1) valor;
  10. +--------------+
  11. | valor        |
  12. +--------------+
  13. | medicamento  |
  14. +--------------+
  15. 1 row in set (0.00 sec)
En tanto el contenido del registro sea "texto#numero", funcionará.
Obviamente, también funcionaría aplicándolo directamente sobre la consulta, por eso preguntaba cuál era la soluciona lograr. Pero es preferible corregir la tabla y no tener que recordar la funcion en cada una de las veces que debas hacer consultas... ¿no te parece?
Si algo te llega a fallar, siempre tendrás el respaldo de la tabla para restaurar, deshaciendo el agregado de la columna, por supuesto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)