Оператор PostgreSQL IS NULL

Читать первым в Telegram

Данная статья относится к циклу статей, посвященных 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

Поддержать проект

Социальные сети проекта:

Подпишись, чтобы ничего не пропустить!