Данная статья относится к циклу статей, посвященных PostgreSQL. В предыдущей статье мы говорили об операторах в PostgreSQL LIKE и ILIKE. Теперь же мы углубимся в изучение оператора IS NULL, используемого для того, чтобы проверить является ли значение NULL или нет.
Введение в операторы PostgreSQL NULL и IS NULL
В мире баз данных, NULL обозначает отсутствие или неприемлимость информации.
Например, у вас есть таблица контактов (contacts), которая хранит имя, фамилию, адрес электронной почты и номер телефона контактов. Во время записи контакта, вы можете не знать его/её номер телефона. Чтобы решить эту проблему, определите столбец phone как обнуляемый столбец и вставьте в него NULL, когда будете записывать контактную информацию.
CREATE TABLE contacts(
id INT GENERATED BY DEFAULT AS IDENTITY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(15),
PRIMARY KEY (id)
);
Вы узнаете, как создать новую таблицу в одном из следующих уроков. На данный момент вам просто нужно выполнить приведённый выше запрос для создания таблицы контактов.
Чтобы вставить несколько контактов, у одного из которых есть номер телефона, а у другого нет, используйте следующий запрос:
INSERT INTO contacts(first_name, last_name, email, phone)
VALUES
('John','Doe','[email protected]',NULL),
('Lily','Bush','[email protected]','(408-234-2764)');
Чтобы найти контакт, который остался без номера телефона, воспользуйтесь следующим запросом:
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone = NULL;
Однако, оператор не вернёт строку, потому что выражение phone = NULL в условии WHERE всегда возвращает false.
Даже если в телефонном столбце есть NULL, выражение NULL = NULL возвращает false. Связано это с тем, что NULL не равен ни одному значению, даже самому себе.
Чтобы проверить, является значение NULL или нет, используйте оператор IS NULL:
value IS NULL
Выражение вернёт true если значение является NULL, или false, если не является.
Итак, чтобы получить контакт, у которого нет какого-либо номера телефона, хранящегося в колонке phone, используйте следующий запрос:
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone IS NULL;
Пример вывода:
Оператор PostgreSQL IS NOT NULL
Чтобы проверить, не является ли значение NULL, используйте оператор IS NOT NULL:
value IS NOT NULL
Выражение вернёт true, если значение не является NULL, или false, если значение равно NULL.
Например, чтобы найти контакт, у которого есть номер телефона, используйте следующий запрос:
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone IS NOT NULL;
Пример вывода:
В данной статье, вы узнали как использовать оператор PostgreSQL IS NULL, чтобы проверить, является ли значение NULL или нет. В следующий раз мы поговорим о псевдонимах в PostgreSQL.
Источник: PostgreSQL Tutorial from Scratch