Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   diferencia entre null y valor vacío (http://www.forosdelweb.com/f86/diferencia-entre-null-valor-vacio-579447/)

SUSMO 24/04/2008 04:47

diferencia entre null y valor vacío
 
Hola a todos,

¿Alguien me puede explicar la diferencia entre guardar un campo vacío en una tabla o guardar null?

El problema viene porque en una tabla tengo campos definidos como enteros, permito que puedan ser nulos y por defecto de doy el valor NULL.
A la hora de hacer el insert de esos campos si pongo valores vacíos me crea un error:
Cita:

INSERT INTO coches VALUES('65064',432,'cotxe',20,14,52,'1.6 16V 110cv','usado',,'si',7900.00,2003,2003,,55000,'gas olina','manual','si','no','no',,,,,,,'','El coche bla bla bla.','no',1 ) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''si',7900.00,2003,2003,,55000,'gasolina','manual' ,'si','si','no','si','no','no',' at line 1
He estado investigando y los tipos corresponden a valor vacío, es decir el primer valor que inserto vacío (despues de 'usado') se corresponde a un dato de tipo entero, en cambio si le pongo como vacío de una cadena ' ' me lo inserta bien, lo mismo pasa si en lugar de , , le pongo null

Yo tenía entendido que si haces un insert de un valor vacío te coge el de por defecto que en mi caso es null y no entiendo pq me da problemas. Puedo solucionar mi problema poniendo null en lugar de vacío pero me gustaría aclarar el concepto para no repetir el error.
He estado mirando el manual de MySQL pero aún me he liado más.

¿Alguien puede explicarmelo?

Gracias por adelantado.

SUSMO 24/04/2008 07:51

Re: diferencia entre null y valor vacío
 
Otra pregunta más, al hacer un select, cual es el valor del campo que devuelve mysql si éste está guardado en la base de datos como NULL? devuelve lo mismo que si guardara un valor vacío o en blanco?

Seria lo mismo hacer:

$row=mysql_fetch_row($query)
if ($row[campo] == '') a if ($row[campo] == NULL) ?

Se puede insertar un campo declarado numérico en blanco? sin comillas sólo un espacio en blanco.

Gracias por vuestra atención

seyko 24/04/2008 08:12

Re: diferencia entre null y valor vacío
 
Cita:

Iniciado por SUSMO (Mensaje 2377165)
Hola a todos,

¿Alguien me puede explicar la diferencia entre guardar un campo vacío en una tabla o guardar null?

El problema viene porque en una tabla tengo campos definidos como enteros, permito que puedan ser nulos y por defecto de doy el valor NULL.
A la hora de hacer el insert de esos campos si pongo valores vacíos me crea un error:


He estado investigando y los tipos corresponden a valor vacío, es decir el primer valor que inserto vacío (despues de 'usado') se corresponde a un dato de tipo entero, en cambio si le pongo como vacío de una cadena ' ' me lo inserta bien, lo mismo pasa si en lugar de , , le pongo null

Yo tenía entendido que si haces un insert de un valor vacío te coge el de por defecto que en mi caso es null y no entiendo pq me da problemas. Puedo solucionar mi problema poniendo null en lugar de vacío pero me gustaría aclarar el concepto para no repetir el error.
He estado mirando el manual de MySQL pero aún me he liado más.

¿Alguien puede explicarmelo?

Gracias por adelantado.

Si no haces un insert de un campo, te pilla el valor por defecto, si le dices que el valor es vacio le estas dando un "valor".

seyko 24/04/2008 08:14

Re: diferencia entre null y valor vacío
 
Cita:

Iniciado por SUSMO (Mensaje 2377393)
Otra pregunta más, al hacer un select, cual es el valor del campo que devuelve mysql si éste está guardado en la base de datos como NULL? devuelve lo mismo que si guardara un valor vacío o en blanco?

Seria lo mismo hacer:

$row=mysql_fetch_row($query)
if ($row[campo] == '') a if ($row[campo] == NULL) ?

No es lo mismo.

Cita:

Se puede insertar un campo declarado numérico en blanco? sin comillas sólo un espacio en blanco.

Gracias por vuestra atención
La respuesta es simple, puedes hacer un casting de un espacio en blanco a un numero? No.

gnzsoloyo 24/04/2008 08:20

Re: diferencia entre null y valor vacío
 
Un espacio en blanco es el CHAR(32).
NULL equivale al CHAR(0) y define un objeto no asignado, mientras que ('') define un campo que se sabe sin contenido.
En esencia son distintos porque, como en programación C o VB, un objeto igual Nothing o NULL es un objeto sin asignación de memoria. Mientras que un objeto vacío es un objeto que apunta a aun área de memoria, declarandola vacía.
El sentido de inexistencia es la determinación de estados de no relación entre valores de campos de tablas, que pueden ser útiles en determinadas consultas. Dentro de la definición de una tabla, sirve, por ejemplo, para definir campos pueden omitirse sin que afecten la consistencia de datos.
Para una mejor y más amplia aclaración visita: A.5.3. Problemas con valores NULL

SUSMO 24/04/2008 09:35

Re: diferencia entre null y valor vacío
 
Muchas gracias, me habéis sido de mucha ayuda!!!


La zona horaria es GMT -6. Ahora son las 06:24.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.