SQL NULLФункции


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

Посмотрите на таблицу "Products" ниже:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 Ярлсберг 10.45 16 15
2 Маскарпоне 32.56 23
3 Горгонзола 15.67 9 20

Предположим, "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

Другие расширения