En SQL, null es null, vacío está vacío

Considerando una tabla de datos de Estudiantes
, con el campo nombre
y el campo empresa
, vamos a traer a aquellos que no han completado el campo empresa
. Una solución es buscar la string vacía:
select nombre, empresa from Estudiantes where empresa = ‘ ‘;
> Paulo,
> ...
> Carlos
> Total: 1000 estudiantes
Pero sé que tengo más de 1000 estudiantes que aún no han completado este campo, ¿dónde están?
select nombre, empresa from Estudiantes where empresa is null;
> Guilherme, NULL
> ...
> Ana, NULL
> Total: 2000 estudiantes
¿Qué sucede que algunos estudiantes están en blanco, otros son nulos?
Tenga mucho cuidado al crear sus tablas. En general, hacemos lo mismo que con cualquier lenguaje de programación: definimos una variable y no le damos un valor predeterminado. Esto sucede mucho en la orientación a objetos, definimos variables miembro sin valor predeterminado. ¿Resultado?
Algunas personas no editaron el perfil y continúan con el valor predeterminado del banco (NULL
). Otros editaron pero no completaron y ahora están en blanco. Y ahora cada query que harás en tu vida tienes que verificar:
select * from Estudiantes where empresa = ‘ ’
or empresa is null and registro > '20150101';
Peor, además del hecho de que ya hemos visto que OR
es un horror en la Tierra, debemos recordar ponerlo entre paréntesis para no dar un resultado incorrecto:
select * from Estudiantes
where (empresa = ' ' or compania is null)
and registro > '20150101';
Utiliza el valor predeterminado. Usa default y deja de preocuparte:
alter table Estudiantes modify column empresa
varchar (200) default ' ' not null;
Ahora está seguro de que todas las consultas solo necesitan verificar valores vacíos. ¿La posibilidad de cometer errores? ¡Mucho más pequeña!
Para continuar desarrollandote, ¡mira nuestros cursos de Data Science aquí en Alura!