Comparteix a través de


NULL y UNKNOWN (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

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. Las comparaciones entre dos valores NULL, o entre un valor NULL y cualquier otro valor, devuelven desconocidos porque el valor de cada uno NULL es desconocido.

Normalmente, los valores NULL indican que los datos son desconocidos, no aplicables o que se van a agregar posteriormente. Por ejemplo, es posible que la inicial central de un cliente no se conozca en el momento en que el cliente realiza un pedido.

Ten en cuenta:

  • Para probar si hay valores NULL en una consulta, use IS NULL o IS NOT NULL en la WHERE cláusula .

  • Puede insertar valores NULL en una columna indicando NULL explícitamente en una INSERT instrucción o UPDATE o dejando una columna fuera de una INSERT instrucción.

  • Los valores NULL no se pueden usar como información necesaria para distinguir una fila de una tabla de otra fila de una tabla. Algunos ejemplos son las claves principales o para obtener información que se usa para distribuir filas, como las claves de distribución.

Comentarios

Cuando los valores NULL están presentes en los datos, los operadores lógicos y de comparación pueden devolver un tercer resultado en lugar de UNKNOWN simplemente TRUE o FALSE. Esta necesidad de una lógica de tres valores es el origen de muchos errores de la aplicación. Los operadores lógicos de una expresión booleana que incluye UNKNOWN devuelven UNKNOWN, a menos que el resultado del operador no dependa de la UNKNOWN expresión. En estas tablas se proporcionan ejemplos de este comportamiento.

En la tabla siguiente se muestran los resultados de aplicar un AND operador a dos expresiones booleanas donde una expresión devuelve UNKNOWN.

Expresión 1 Expresión 2 Resultado
TRUE UNKNOWN UNKNOWN
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN FALSE

En la tabla siguiente se muestran los resultados de aplicar un OR operador a dos expresiones booleanas donde una expresión devuelve UNKNOWN.

Expresión 1 Expresión 2 Resultado
TRUE UNKNOWN TRUE
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN UNKNOWN