如果列包含 NULL 值,则 NULL 函数可用于提供列的替代值。在 MariaDB 中,有两个函数可以用于此目的:
- IFNULL() 函数
- COALESCE() 函数
示例:
考虑一个名为 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 |
为了避免这种情况,使用 NULL 函数为如果列包含 NULL 值。
MariaDB IFNULL() 函数
MariaDB IFNULL() 函数允许您在列值为 NULL 时提供替代值。如果值为 NULL,下面的语句将返回 0。
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 |
MariaDB COALESCE() 函数
MariaDB COALESCE() 函数与 MariaDB IFNULL() 函数具有相同的用途。上面的查询与下面相同:
SELECT *, Price * (StockQuantity + COALESCE(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 |