В этом руководстве вы узнаете, как использовать функцию 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;
На следующем рисунке показан результат:
Если разделение не требует минимального возраста, столбец 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() для замены NULL указанным значением.