Последние учебники веб-разработки
 

SQL NULL Функции


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

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

p_id Наименование товара Цена за единицу UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 Маскарпоне 32.56 23
3 горгонзола 15.67 9 20

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

Мы имеем следующую ЗЕЬЕСТ:

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

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

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

NVL() , IFNULL() , и COALESCE() функции также могут быть использованы для достижения такого же результата.

В этом случае мы хотим, чтобы NULL значения равным нулю.

Ниже, если "UnitsOnOrder" является NULL это не повредит расчет, так как ISNULL() возвращает ноль , если значение NULL:

MS Access

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

SQL Server

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() функцию. Тем не менее, он работает немного отличную от компании Microsoft ISNULL() функции.

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

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

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

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