Diferencias entre NULL y vacio

7,433 views
Skip to first unread message

arvios

unread,
Feb 8, 2012, 3:50:30 PM2/8/12
to Mundo Visual FoxPro
Amigos buenas tardes: Quisiera saber que diferencias hay entre marcar
un campo que reciba valores nulos o no. Sobre todo en VFP y SQL SERVER

Muchas gracias

Carlos Miguel FARIAS

unread,
Feb 8, 2012, 4:44:12 PM2/8/12
to mundovis...@googlegroups.com
Un dato vacio es "redundantemente" un dato vacio.
Por ejemplo si tienes un campo en una tabla que en distintos registros tienen los valores...

"PEPE", "JUAN", "JOSE", "" (el ultimo es vacio)
Un SELECT MIN(LEN(Campo)) FROM ...
te daría un valor 0 (el ultimo valor, está vacio)

En cambio
"PEPE", "JUAN", "JOSE", .NULL. (el ultimo es nulo)
Un SELECT MIN(LEN(Campo)) FROM ...
te daría un valor 4, el nulo, no se tiene en cuenta.

En general, un contenido nulo (no es un valor, es la "ausencia de valor") es un dato desconocido o no cargado.
Otro ejemplo:
Nombre="PEDRO", SEGNOMBRE = "", APELLIDO = "PEREZ"
indica que no tiene segundo nombre (está vacio)
en cambio
Nombre="PEDRO", SEGNOMBRE = NULL, APELLIDO = "PEREZ"
indica que no se sabe si tiene segundo nombre.

Si en un sistema tenes cargados todos los posibles examenes de un estudiante.
De los examenes no rendidos, si pones 0 y pedis el promedio de nota, el 0 (que es el vacio numerico) se cuenta como una nota cero (y baja el promedio) y no es cierto, porque el examen no estaría rendido.
En cambio un valor null, no se cuenta para el promedio, suma, etc. (eso es lo que hace sql).
Saludos: Miguel, Santa Rosa (LP)



--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

arvios

unread,
Feb 8, 2012, 6:29:16 PM2/8/12
to Mundo Visual FoxPro
Muchas gracias por sus comentarios, eso quiere decir que si utilizo
sql mejor utilizo campos nulos y no vacios, inclusive hasta puede
ahorrar espacio en disco?

Muchas gracias,

Arnoldo

Carlos Miguel FARIAS

unread,
Feb 9, 2012, 6:15:28 AM2/9/12
to mundovis...@googlegroups.com
Usar campos nulos tiene de por si un cierto consumo de espacio en
disco (fijo), ese espacio se ocupa el contenido sea nulo o no. Es como
una lugar para dejar una marca del estado del campo.
Además, un campo vacio no ocupa menos lugar.
Por ejemplo, si pones un 0 en un campo entero, el campo entero se
guarda completo.
Si pones vacio en un campo char, se autocompleta hasta su largo con
espacios en blanco
Si pones vacio en un campo varchar, guarda vacio pero ocupa un espacio
fijo, que dependera del SGBD (por ejemplo en mysql, ocupa siempre al
menos 4 caracteres).
La ventaja del campo nulo es el concepto de dato desconocido (ausencia
de valor) que permite que en calculos matematicos, el campo no se
tiene cuenta, o por ejemplo, no es lo mismo que "no haya" que "no se
sepa si hay".
Otra cosa que no comente.
En algunos SGBD, los indices únicos (UNIQUE) que no son primarios
(CANDIDATOS en FOX), al igual que los primarios, no permiten claves
duplicadas, pero si permiten valores null (y estos pueden estar en
varios registros, como no se cargan al indice, y no da error de clave
duplicada)
Por ejemplo, si estas cargando datos de clientes, es sabido que dos
clientes no pueden tener el mismo CUIT, por lo tanto, es logico poner
sobre ese campo una clave unica, para evitar repetidos, pero de muchos
clientes, se ignora el CUIT, por lo que si podemos decir que ese campo
admite nulos, y el indice funciona bien (ignora los registros con
clave nula).

Saludos: Miguel, Santa Rosa (LP)


El 08/02/12, arvios <arv...@gmail.com> escribió:

arvios

unread,
Feb 10, 2012, 11:55:20 AM2/10/12
to Mundo Visual FoxPro
Entendido 100% muchas gracias por su ayuda
Reply all
Reply to author
Forward
0 new messages