MariaDB IFNULL() 函数用于在表达式为 NULL 时提供备用值。如果表达式不为空,此函数返回表达式。
语法
IFNULL(expression, value_if_null)
参数
expression | 必填。 将要测试的值指定为 NULL。 |
value_if_null | 必需。 指定表达式为NULL时返回的值。 |
返回值
如果表达式不为空,返回表达式。如果表达式为NULL,则返回value_if_null。
示例1:
下面的示例显示了IFNULL的用法() 函数。
SELECT IFNULL('Paris', 'London');
Result: 'Paris'
SELECT IFNULL(NULL, 'London');
Result: 'London'
SELECT IFNULL(5/0, 'Dividing by 0 returns NULL');
Result: 'Dividing by 0 returns NULL'
SELECT IFNULL(DATE('2018-10-15'), '2018-10-31');
Result: '2018-10-15'
SELECT IFNULL(DATE(NULL), '2018-10-31');
Result: '2018-10-31'
示例 2:
考虑一个名为 Product 的数据库表,其中包含以下记录:
ProductName | Price | StockQuantity | OrderQuantity |
---|---|---|---|
Apple | 1.00 | 100 | 20 |
Banana | 1.25 | 120 | 30 |
Orange | 2.15 | 105 | NULL |
Watermelon | 3.50 | 75 | 15 |
如果OrderQuantity是可选的并且可以包含NULL值。下面提到的语句将给出 NULL 值。
SELECT *, Price * (StockQuantity + OrderQuantity) AS Inventory
FROM Product;
这将产生如下所示的结果:
ProductName | Price | StockQuantity | OrderQuantity | Inventory |
---|---|---|---|---|
Apple | 1.00 | 100 | 20 | 120.0 |
Banana | 1.25 | 120 | 30 | 187.5 |
Orange | 2.15 | 105 | NULL | NULL |
Watermelon | 3.50 | 75 | 15 | 315.0 |
为了避免这种情况,IFNULL()如果列包含 NULL 值,则使用该函数为该列提供替代值。
SELECT *, Price * (StockQuantity + IFNULL(OrderQuantity, 0)) AS Inventory
FROM Product;
这将产生如下所示的结果:
ProductName | Price | StockQuantity | OrderQuantity | Inventory |
---|---|---|---|---|
Apple | 1.00 | 100 | 20 | 120.0 |
Banana | 1.25 | 120 | 30 | 187.5 |
Orange | 2.15 | 105 | NULL | 225.75 |
Watermelon | 3.50 | 75 | 15 | 315.0 |