SQL IS NULL
仅仅选取在 "Address" 列中带有 NULL 值的记录
select LastName,FirstName,Address FROM Persons
where Address is null
结果集:
LastName FirstName Address
Adams John
Carter Thomas
提示:请始终使用 IS NULL 来查找 NULL 值。
SQL IS NOT NULL
使用 IS NOT NULL 操作符:
select LastName,FirstName,Address FROM Persons
where Address is not null
结果集:
LastName FirstName Address
Bush George Fifth Avenue
SQL isnull()、nvl()、ifnull() 和 coalesce() 函数
P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36
3 telephone 280 159 57
假如 "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