Как использовать значения NULL внутри предложения NOT IN в SQL?

Опубликовано: 1 Сентября, 2022

В этой статье мы увидим, как использовать значения NULL внутри предложения NOT IN в SQL. NULL имеет особый статус в SQL. Он представляет собой отсутствие ценности, поэтому его нельзя использовать для сравнения. Если вы используете его для сравнения, он всегда будет возвращать NULL.

Чтобы использовать значение NULL в предложении NOT IN, мы можем сделать отдельный подзапрос для включения значений NULL.

Создайте отдельное предложение where для NULL, например:

Запрос:

WHERE value IS NULL;

Шаг 1: Создание базы данных

Используйте приведенный ниже оператор SQL для создания базы данных с именем geeks;

Запрос:

CREATE DATABASE geeks;

Шаг 2: Использование базы данных

Используйте приведенный ниже оператор SQL, чтобы переключить контекст базы данных на гиков:

Запрос:

USE geeks;

Шаг 3: Создание таблицы

У нас есть следующая demo_table в нашей компьютерной базе данных.

Запрос:

CREATE TABLE demo_table(
NAME VARCHAR(20),
GENDER VARCHAR(20),
AGE INT,
CITY VARCHAR(20) );

Шаг 4: Вставьте данные в таблицу

Запрос:

INSERT INTO demo_table VALUES
("ROMY KUMARI", "FEMALE", NULL, "NEW DELHI"),
("PUSHKAR JHA", "MALE",24, "NEW DELHI"),
("RINKLE ARORA", "FEMALE",23, "PUNJAB"),
("AKASH GUPTA", "MALE", NULL, "UTTAR PRADESH"),
("NIKHIL KALRA", "MALE", 23, "PUNJAB"),
("SHALINI JHA","FEMALE", 22, "DELHI");

Шаг 5: Просмотрите данные таблицы

Запрос:

SELECT * FROM demo_table;

Выход:

Шаг 6: Использование значений NULL в NOT NULL

Для демонстрации мы вернем значения из таблицы, AGE которой не является значением NULL.

Запрос:

SELECT * FROM demo_table WHERE AGE NOT IN (SELECT AGE WHERE AGE IS NULL);

Выход:

Если вы хотите добавить значения в предложение NOT IN, определите отдельное предложение NOT IN с оператором AND. Если вы добавите значение в том же предложении NOT IN, оно вернет NULL.

Запрос:

SELECT * FROM demo_table WHERE AGE NOT IN ((SELECT AGE WHERE AGE IS NULL),24);

Выход:

Возвращает пустую таблицу.

Правильный способ добавления других значений в предложение NOT IN со значениями NULL:

Запрос:

SELECT * FROM demo_table WHERE AGE NOT IN (SELECT AGE WHERE AGE IS NULL) and AGE NOT IN (24);

Выход: