Функции SQL ISNULL(), NVL(), IFNULL() и COALESCE()

❮ Предыдущая Далее ❯


Функции SQL IFNULL(), ISNULL(), COALESCE() и NVL()

Посмотрите на следующую таблицу «Продукты»:

P_Id Название продукта Единица Цена ЕдиницНа складе Единицы по заказу
1 Ярлсберг 10,45 16 15
2 Маскарпоне 32,56 23  
3 Горгонзола 15,67 9 20

Предположим, что столбец «UnitsOnOrder» является необязательным и может содержать значения NULL.

Посмотрите на следующую инструкцию SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
ИЗ продуктов;

В приведенном выше примере, если любое из значений «UnitsOnOrder» равно NULL, результат будет NULL.


Решения

MySQL

Функция MySQL IFNULL() позволяет вернуть альтернативное значение, если выражение равно NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;

или мы можем использовать COALESCE() , например:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

SQL Server

SQL Server Функция ISNULL() позволяет вы возвращаете альтернативное значение, когда выражение равно NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;

или мы можем использовать

COALESCE() функция, например:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
ИЗ продуктов;

MS Access

MS Access Функция IsNull() возвращает ИСТИНА (-1), если выражение имеет нулевое значение, иначе ЛОЖЬ (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;

Oracle

Функция Oracle NVL() дает тот же результат:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
ИЗ продуктов;

или мы можем использовать COALESCE() функция, например:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

❮ Предыдущий Следующий ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебник HTML
Учебник CSS
Учебник JavaScript
Учебник How To
Учебник SQL
Учебник Python
Учебник W3. CSS
Учебник Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

Основные ссылки
HTML Reference
CSS Reference
JavaScript Reference
SQL Reference
Python Reference
W3.CSS Reference
Bootstrap Reference
PHP Reference
HTML Colors
Java Reference
Angular Reference
jQuery Reference

Top2 Examples Примеры HTML

Примеры CSS
Примеры JavaScript
Как сделать Примеры
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


FORUM | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.

Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools использует W3.CSS.

ISNULL Функция SQL в операторах Case

В этом блоге мы собираемся обсудить оператор CASE , который можно использовать для обработки нескольких логических операций. Мы также обсудим функцию SQL ISNULL

, которая позволит вам вернуть значение замены в случае, если есть выражения, имеющие значение NULL .

ДЕЛО 9Оператор 0206 и функция ISNULL очень полезны при работе с кодами, требующими большого количества логических операций, и для быстрой замены фиксированных или заданных значений выражением.

Оператор CASE в SQL аналогичен использованию оператора IF ELSE . Однако, скорее всего, он похож на оператор SWITCH , который мы используем в DAX .

С другой стороны, функция ISNULL предназначена для замены NULL значение с конкретным значением, которое вы хотите использовать.

Содержание

Использование оператора CASE в SQL

Предположим, что у нас есть столбцы ProductName и Sales Amount .

Затем мы хотим создать дополнительный столбец с именем Описание .

Мы также хотим добавить логические операторы, которые будут отображать « Дешевые », если Сумма продаж меньше или равна 5 , затем « Не так дешево » между 6 и 100 . Если значение больше сотни, будет отображаться « Дорого ».

В этом примере мы использовали оператор SELECT , чтобы выбрать столбец, который мы хотим просмотреть. После этого у нас есть оператор CASE , который содержит логические операции, о которых мы упоминали ранее.

При использовании оператора CASE операторы WHEN и THEN 9Операторы 0206 всегда используются для указания логических операций, которые мы хотим реализовать в выбранном столбце. Оператор ELSE предназначен для установки значения по умолчанию, если набор логических операций не был выполнен.

В конце инструкции CASE у нас есть END AS и имя столбца рядом с ним. Это создаст новый столбец с именем Описание со значениями, основанными на логических операциях, которые мы добавили в СЛУЧАЙ 9.Заявление 0206.

Использование функции SQL ISNULL

Функция ISNULL предназначена для проверки наличия значений NULL в выбранном столбце и замены их любым указанным значением. Теперь давайте представим, что у нас есть следующие столбцы со значениями NULL .

В приведенном выше примере все значения NULL заменены значениями ‘ Unknown ’.

Следующие строки кода используются для создания этого примера.

При использовании функции SQL ISNULL следует начать с выбора столбца MiddleName с помощью оператора SELECT .

После этого вы должны использовать функцию ISNULL , чтобы проверить столбец MiddleName , указанный в круглых скобках, и заменить любое значение NULL в нем значением « Unknown ».

Функция AS предназначена для создания нового столбца, в данном случае это 9-й столбец.0205 Отчество_Новое

.

Обратите внимание, что функция ISNULL заменит значения NULL только в том случае, если определенное значение не равно NULL . Затем он вернет то же значение из столбца, которое вы указали в функции ISNULL .

Далее я буду использовать оператор CASE и функции ISNULL в SSMS , чтобы вы могли увидеть, как это работает на самом деле.

Оператор CASE в SSMS

Начнем с выбора столбца FirstName из Person.Person . Обратите внимание, что в этом примере нет необходимости выбирать столбец. Это только для справки.

После вызова этого столбца давайте создадим столбец, в котором будут отображаться значения независимо от того, является ли имя Ким или нет, с помощью оператора CASE . Для этого просто следуйте приведенному ниже примеру.

В приведенном выше примере кода мы добавили условие, используя 9Оператор 0205 CASE , где, если Имя равно « Ким », будет отображаться « Да », а если нет, то вместо этого будет отображаться « Нет ».

Для этого примера я также создал новый столбец с именем « IsKim », используя функцию КОНЕЦ КАК . См. пример ниже для результата.

Теперь давайте рассмотрим другой пример, используя оператор CASE , применяя некоторые условия к TaxAmt из таблицы Sales. SalesOrderHeader .

Во-первых, давайте возьмем первые 100 столбцов из Sales.SalesOrderHeader , используя следующую строку кода, и найдем столбец TaxAmt .

После этого начнем применять условия для столбца TaxAmt с оператором CASE , используя приведенный ниже пример.

Как и в предыдущем примере, мы начали с выбора столбца, к которому мы хотим применить наши условия — в данном случае это столбец 9.0205 Налоговая сумма столбец.

Затем в операторе CASE мы добавили условия, при которых, если TaxAmt меньше или равно 500, , тогда будет отображаться значение « Perfect «. Если TaxAmt меньше или равно 2000 , то будет отображаться значение ‘ Okay ‘.

Кроме того, если условия не были соблюдены, будет отображаться значение ‘ Not Good . В конце оператора я создал новый столбец с именем 9.0205 Налоговый класс .

Вот как мы используем оператор CASE в SQL . Обратите внимание, что вы можете установить столько условий, сколько захотите. Просто не забудьте использовать операторы WHEN и THEN , а также функцию END AS для создания нового столбца, в котором будут отображаться результаты.

ISNULL Функция SQL в SSMS

В этом примере я буду использовать ту же таблицу из предыдущего примера. Затем я покажу, как вы можете использовать эту функцию для замены Значения NULL в столбце CurrencyRateID .

После выбора таблицы из приведенного выше примера мы можем увидеть значения NULL в столбце CurrencyRateID . Теперь я хочу заменить эти значения NULL на « 1 ». Для этого обратитесь к приведенному ниже примеру.

Чтобы изменить значения NULL в определенном столбце, сначала нам нужно выбрать столбец со значениями NULL. В данном случае это CurrencyRateID 9.0206 . Затем мы воспользуемся функцией ISNULL и выберем столбец, который будет проверяться функцией ISNULL , то есть CurrencyRateID .

Нам также необходимо объявить значение замены, которое мы хотим использовать — для этого примера я использовал « 1 ». Наконец, мы добавим функцию AS для создания нового столбца с именем NewRate .

В результате все значения NULL были заменены на ‘ 1 ’ под NewRate , а те, у которых не было значения NULL , остались прежними. Кроме того, вы также можете изменить значение NULL с помощью столбца. Вы можете сделать это, следуя приведенному ниже примеру.

Используя тот же синтаксис, что и в предыдущем примере, мы просто добавили SalesOrderID рядом с CurrencyRateID в качестве ссылки перед функцией ISNULL . Затем мы изменили значение замены на SalesOrderID 9.0206 . Этот оператор просто проверит значения NULL в CurrencyRateID и заменит их значениями из столбца SalesOrderID .

***** Ссылки по теме *****
Общие табличные выражения SQL
Загрузка и установка SQL Server и SSMS
Извлечение данных SQL с использованием OFFSET и FETCH

Заключение

Итак, вы узнали, как использовать оператор CASE и ISNULL вместе с правильным синтаксисом в SQL . Вы также узнали, что в оператор CASE можно включить любое количество логических условий. Просто обратите внимание, что оператор CASE аналогичен оператору SWITCH или IF ELSE .

В дополнение к функции ISNULL вы узнали, что существуют различные способы замены значения NULL при использовании этой функции, то есть посредством использования фиксированного значения или столбца.

Всего наилучшего,

Хафиз

***** Learning Power BI? *****
БЕСПЛАТНЫЙ КУРС — Полное руководство для начинающих по Power BI
БЕСПЛАТНЫЙ КУРС — Полное руководство для начинающих по DAX
БЕСПЛАТНО — 60-страничное справочное руководство по DAX Скачать
БЕСПЛАТНО — Power BI Resource
Enterprise DNA On-Demand
Доступ к платформе Enterprise DNA
События Enterprise DNA

Теги: оператор SQL CASE, SQL для Power BI, функция SQL ISNULL, запросы SQL, оператор SQL SELECT, SQL Server Management Studio, оператор SQL SWITCH

Опубликовано Хафизом Зубайром Султаном

Хафиз проработал в сфере информационных технологий и телекоммуникаций более 14 лет. Он большой поклонник того, что делает Power Query и как он способствует повышению эффективности, а также любит решать сложные проблемы с помощью DAX.