Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/11/2012, 08:45
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: Problemas con REPLACE INTO

Hola tumbero_x:

Tienes dos opciones, la primera sería enviar la palabra NULL cuando la variable venga vacía, o listar sólo los campos que tienen valor, checa este script, observa que la tabla tiene tres campos:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla (id INT, campo1 VARCHAR(10), campo2 DECIMAL,
  2.   --> campo3 INT);
  3. Query OK, 0 rows affected (0.12 sec)

este sería un insert normal, cuando todos los campos tienen valor:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla VALUES (1, 'uno', 10.26, 9);
  2. Query OK, 1 row affected, 1 warning (0.06 sec)

Ahora bien, si los campos 2 y 3 no tienen valor, tienes distintas opciones para hacer el insert.

Colocando NULL:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla VALUES (2, 'dos', NULL, NULL);
  2. Query OK, 1 row affected (0.06 sec)

Listando sólo los campos que tienen valor:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla (id, campo1) VALUES (3, 'tres');
  2. Query OK, 1 row affected (0.02 sec)
  3.  
  4. mysql> INSERT INTO tabla (id, campo1, campo2) VALUES (4, 'cuatro', NULL);
  5. Query OK, 1 row affected (0.03 sec)


De esta manera los campos quedan con un valor vacío.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+--------+--------+--------+
  3. | id   | campo1 | campo2 | campo3 |
  4. +------+--------+--------+--------+
  5. |    1 | uno    |     10 |      9 |
  6. |    2 | dos    |   NULL |   NULL |
  7. |    3 | tres   |   NULL |   NULL |
  8. |    4 | cuatro |   NULL |   NULL |
  9. +------+--------+--------+--------+
  10. 4 rows in set (0.00 sec)

Saludos
Leo.