Buscar..


Introducción

NULL en SQL, así como la programación en general, significa literalmente "nada". En SQL, es más fácil de entender como "la ausencia de cualquier valor".

Es importante distinguirlo de valores aparentemente vacíos, como la cadena vacía '' o el número 0 , ninguno de los cuales es NULL .

También es importante tener cuidado de no incluir NULL entre comillas, como 'NULL' , que se permite en las columnas que aceptan texto, pero no es NULL y puede causar errores y conjuntos de datos incorrectos.

Filtrado para NULL en consultas

La sintaxis para el filtrado de NULL (es decir, la ausencia de un valor) en los bloques WHERE es ligeramente diferente al filtrado de valores específicos.

SELECT * FROM Employees WHERE ManagerId IS NULL ;
SELECT * FROM Employees WHERE ManagerId IS NOT NULL ;

Tenga en cuenta que dado que NULL no es igual a nada, ni siquiera a sí mismo, usar operadores de igualdad = NULL o <> NULL (o != NULL ) siempre producirá el valor de verdad de UNKNOWN que será rechazado por WHERE .

WHERE filtra todas las filas en las que la condición es FALSE o UKNOWN y mantiene solo las filas en las que la condición es TRUE .

Columnas anulables en tablas

Al crear tablas, es posible declarar una columna como anulable o no anulable.

CREATE TABLE MyTable
(
    MyCol1 INT NOT NULL, -- non-nullable
    MyCol2 INT NULL      -- nullable
) ;

De forma predeterminada, todas las columnas (excepto aquellas en la restricción de clave principal) son anulables a menos que nosotros configuremos explícitamente la restricción NOT NULL .

Intentar asignar NULL a una columna no anulable resultará en un error.

INSERT INTO MyTable (MyCol1, MyCol2) VALUES (1, NULL) ;  -- works fine

INSERT INTO MyTable (MyCol1, MyCol2) VALUES (NULL, 2) ;  
        -- cannot insert
        -- the value NULL into column 'MyCol1', table 'MyTable'; 
        -- column does not allow nulls. INSERT fails.

Actualizando campos a NULL

Establecer un campo en NULL funciona exactamente igual que con cualquier otro valor:

UPDATE Employees 
SET ManagerId = NULL
WHERE Id = 4

Insertando filas con campos NULOS

Por ejemplo, insertar un empleado sin número de teléfono ni administrador en la tabla de ejemplo de Empleados :

INSERT INTO Employees
    (Id, FName, LName, PhoneNumber, ManagerId, DepartmentId, Salary, HireDate)
VALUES
    (5, 'Jane', 'Doe', NULL, NULL, 2, 800, '2016-07-22') ;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow