Функция SQL Server ISNULL

В этом руководстве вы узнаете, как использовать функцию SQL Server ISNULL() для замены NULL указанным значением.

Обзор функции SQL Server ISNULL()

Функция SQL Server ISNULL() заменяет NULL указанным значением. Ниже показан синтаксис функции ISNULL():

ISNULL(expression, replacement)

Функция ISNULL() принимает два аргумента:

  • выражение — это выражение любого типа, проверяемое на значение NULL.
  • replacement — это возвращаемое значение, если выражение равно NULL. Замена должна быть преобразуемой в значение типа выражения.

Функция ISNULL() возвращает замену, если выражение вычисляется как NULL. Перед возвратом значения она неявно преобразует тип замены в тип выражения, если типы двух аргументов различны.

Если выражение не равно NULL, функция ISNULL() возвращает значение выражения.

Примеры функции SQL Server ISNULL()

Давайте рассмотрим несколько примеров использования функции ISNULL().

Использование функции SQL Server ISNULL() с примером числовых данных

В этом примере функция ISNULL() используется для возврата второго аргумента, поскольку первый аргумент равен NULL:

SELECT 
    ISNULL(NULL,20) result;

Вот что получилось:

Result
-----------
20
(1 row affected)

Пример использования функции SQL Server ISNULL() с символьной строкой

В следующем примере функция ISNULL() используется для возврата строки «Hello», поскольку это первый аргумент, а не NULL:

SELECT 
    ISNULL('Hello', 'Hi') Result;

Вывод:

Result
------
Hello
(1 row affected)

Использование функции SQL Server ISNULL() для замены значений NULL на осмысленные значения

Сначала создайте новую таблицу с именем divisions, в которой будут храниться дивизионы спортсменов по возрастам:

CREATE TABLE divisions
(
    id      INT
    PRIMARY KEY IDENTITY, 
    min_age INT DEFAULT 0, 
    max_age INT
);

Во-вторых, вставьте несколько строк в таблицу подразделений:

INSERT INTO divisions(min_age, max_age)
VALUES(5,null),
       (20,null),
       (null,30);

В-третьих, запросите данные из таблицы подразделений:

SELECT
    id,
    min_age,
    max_age 
FROM 
    divisions;

На следующем рисунке показан результат:

Образец таблицы SQL Server ISNULL

Если разделение не требует минимального возраста, столбец min_age будет иметь NULL. Аналогично, если разделение не требует максимального возраста, столбец max_age также будет иметь NULL.

Наконец, используйте функцию ISNULL() для преобразования NULL в столбце min_age в 0 и NULL в столбце max_age в 99:

SELECT 
    id, 
    ISNULL(min_age,0) min_age, 
    ISNULL(max_age,99) max_age
FROM
    divisions;

На следующем рисунке показан результат:

Пример функции SQL Server ISNULL

В этом руководстве вы узнали, как использовать функцию SQL Server ISNULL() для замены NULL указанным значением.

Мирослав С.

Автор статей, ИБ-специалист