Функция NULL SQL

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

Просмотрите следующую таблицу "Products":

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 компьютер 699 25 15
2 принтер 365 36  
3 телефон 280 159 57

Если "UnitsOnOrder" является опциональным и может содержать значение NULL.

Мы используем следующий SELECT запрос:

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

В примерах выше, если значение "UnitsOnOrder" является NULL, результат также будет NULL.

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

Функции NVL(), IFNULL() и COALESCE() также могут достичь аналогичного результата.

Здесь мы хотим, чтобы значение NULL было 0.

Если "UnitsOnOrder" является NULL, это不利于 вычислений, поэтому если значение NULL, то ISNULL() возвращает 0.

SQL Server / MS Access

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

Oracle

Oracle не имеет функции ISNULL(). Однако мы можем использовать функцию NVL() для достижения аналогичного результата:

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

MySQL

MySQL также имеет функцию, аналогичную ISNULL(). Однако ее работа несколько отличается от функции ISNULL() компании Microsoft.

В MySQL мы можем использовать функцию IFNULL() так:

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

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

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