Функция NULL SQL
- Предыдущая страница SQL Nulls
- Следующая страница Типы данных 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
- Предыдущая страница SQL Nulls
- Следующая страница Типы данных SQL