Valores NULL
NULL indica que el valor es desconocido. Un valor NULL no es lo mismo que un valor cero o vacío. No hay dos valores NULL que sean iguales. La comparación entre dos valores NULL, o entre un valor NULL y cualquier otro valor, tiene un resultado desconocido porque el valor de cada NULL es desconocido.
Normalmente, los valores NULL indican que los datos son desconocidos, no aplicables o que se agregarán posteriormente. Por ejemplo, la inicial de un cliente puede que no sea conocida en el momento en que éste hace un pedido.
A continuación se muestra información acerca de los valores NULL:
Para comprobar si hay valores NULL en una consulta, use IS NULL o IS NOT NULL en la cláusula WHERE.
Cuando se ven los resultados de la consulta en el Editor de código de SQL Server Management Studio, los valores null se muestran como NULL en el conjunto de resultados.
Los valores NULL se pueden insertar en una columna si se indica explícitamente NULL en una instrucción INSERT o UPDATE, si se deja fuera una columna de una instrucción INSERT, o bien si se agrega una columna nueva a una tabla existente con la instrucción ALTER TABLE.
Los valores NULL no se pueden usar en la información necesaria para distinguir una fila en una tabla de otra fila, como, por ejemplo, las claves principales.
En el código del programa, puede comprobar la existencia de valores NULL de forma que determinados cálculos sólo se realicen en filas con datos válidos, o no NULL. Por ejemplo, un informe sólo puede imprimir la columna de seguridad social si en la columna hay datos que no son NULL. Quitar los valores NULL cuando realiza cálculos puede ser importante porque algunos cálculos (como, por ejemplo, un promedio) pueden ser incorrectos si se incluyen columnas NULL.
Si es probable que haya valores NULL almacenados en los datos y no desea que aparezcan valores NULL en los datos, debería crear consultas e instrucciones de modificación de datos que quiten los valores NULL o los transformen en algún otro valor.
Importante |
---|
Para minimizar las tareas de mantenimiento y los posibles efectos en las consultas o informes existentes, debería minimizar el uso de los valores NULL. Planee sus consultas e instrucciones de modificación de datos de forma que los valores NULL tengan un efecto mínimo. |
Cuando hay valores NULL en los datos, los operadores lógicos y de comparación pueden devolver un tercer resultado UNKNOWN (desconocido) en lugar de simplemente TRUE (verdadero) o FALSE (falso). Esta necesidad de una lógica de tres valores es el origen de muchos errores de la aplicación. En estas tablas se destaca el efecto de escribir comparaciones con NULL.
En la tabla siguiente se muestra el resultado de aplicar un operador AND a dos operandos booleanos.
AND |
TRUE |
UNKNOWN |
FALSE |
---|---|---|---|
TRUE |
TRUE |
UNKNOWN |
FALSE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
En la tabla siguiente se muestra el resultado de aplicar un operador OR a dos operandos booleanos.
OR |
TRUE |
UNKNOWN |
FALSE |
---|---|---|---|
TRUE |
TRUE |
TRUE |
TRUE |
UNKNOWN |
TRUE |
UNKNOWN |
UNKNOWN |
FALSE |
TRUE |
UNKNOWN |
FALSE |
En la tabla siguiente se muestra cómo el operador NOT niega, o invierte, el resultado de un operador booleano.
Expresión booleana a la que se aplica el operador NOT |
Se evalúa como |
---|---|
TRUE |
FALSE |
UNKNOWN |
UNKNOWN |
FALSE |
TRUE |
El estándar ISO usa las palabras clave IS NULL e IS NOT NULL para comprobar la presencia de valores NULL.
Expresión booleana a la que se aplica el operador IS NULL |
Se evalúa como |
Expresión booleana a la que se aplica el operador IS NOT NULL |
Se evalúa como |
---|---|---|---|
TRUE |
FALSE |
TRUE |
TRUE |
NULL |
TRUE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
Transact-SQL ofrece también una extensión para el procesamiento de los valores NULL. Si la opción ANSI_NULLS tiene establecido el valor OFF, las comparaciones entre los valores NULL, como NULL = NULL, se evalúan como TRUE. Las comparaciones entre NULL y cualquier valor de datos se evalúa como FALSE.