SQL 1 : SQL 教程 2 : SQL 简介 3 : SQL 语法 4 : SQL SELECT 语句 5 : SQL SELECT DISTINCT 6 : SQL WHERE 子句 7 : SQL AND & OR 运算符 8 : SQL ORDER BY 关键字 9 : SQL INSERT INTO 10 : SQL UPDATE 语句 11 : SQL DELETE 语句 12 : SQL SELECT TOP, LIMIT, ROWNUM 13 : SQL LIKE 操作符 14 : SQL 通配符 15 : SQL IN 操作符 16 : SQL BETWEEN 操作符 17 : SQL 别名 18 : SQL 连接(JOIN) 19 : SQL INNER JOIN 关键字 20 : SQL LEFT JOIN 关键字 21 : SQL RIGHT JOIN 关键字 22 : SQL FULL OUTER JOIN 23 : SQL UNION 操作符 24 : SQL SELECT INTO 25 : SQL INSERT INTO SELECT 26 : SQL CREATE DATABASE 27 : SQL CREATE TABLE 28 : SQL 约束 29 : SQL NOT NULL 约束 30 : SQL UNIQUE 约束 31 : SQL PRIMARY KEY 32 : SQL FOREIGN KEY 33 : SQL CHECK 约束 34 : SQL DEFAULT 约束 35 : SQL CREATE INDEX 36 : SQL 撤销索引、表以及数据库 37 : SQL ALTER TABLE 38 : SQL AUTO INCREMENT 39 : SQL 视图 (Views) 40 : SQL Server 和 MySQL 中的 Date 函数 41 : SQL NULL 值 – IS NULL 和 IS NOT NULL 42 : SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数 43 : SQL 通用数据类型 44 : SQL MS Access、MySQL 和 SQL Server 数据类型 45 : SQL 函数 46 : SQL AVG() 函数 47 : SQL COUNT() 函数 48 : SQL FIRST() 函数 49 : SQL LAST() 函数 50 : SQL MAX() 函数 51 : SQL MIN() 函数 52 : SQL SUM() 函数 53 : SQL GROUP BY 语句 54 : SQL HAVING 子句 55 : SQL UCASE() 函数 56 : SQL LCASE() 函数 57 : SQL MID() 函数 58 : SQL LEN() 函数 59 : SQL ROUND() 函数 60 : SQL NOW() 函数 61 : SQL FORMAT() 函数 62 : SQL 快速参考 63 : SQL 主机 64 : SQL 总结

SQL NULL 函数


SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数

请看下面的 "Products" 表:

P_IdProductNameUnitPriceUnitsInStockUnitsOnOrder
1Jarlsberg10.451615
2Mascarpone32.5623
3Gorgonzola15.67920

假如 "UnitsOnOrder" 是可选的,而且可以包含 NULL 值。

我们使用下面的 SELECT 语句:

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

在上面的实例中,如果有 "UnitsOnOrder" 值是 NULL,那么结果是 NULL。

微软的 ISNULL() 函数用于规定如何处理 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() 函数有点不同。

在 MySQL 中,我们可以使用 IFNULL() 函数,如下所示:

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

或者我们可以使用 COALESCE() 函数,如下所示:

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


关注极客云图了解更多内容