首页 > 数据库 > 数据库开发技术 > 五种主流数据库:查找空值
| 查找空值 | MySQL | Oracle | SQL Server | PostgreSQL | SQLite |
|---|---|---|---|---|---|
| IS [NOT] NULL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| ISNULL、NOTNULL | ISNULL() | ❌ | ❌ | ✔️ | ✔️ |
| IS [NOT] DISTINCT FROM | ❌ | ❌ | ✔️ | ✔️ | IS [NOT] |
| ISNULL、NOTNULL | ✔️ | ❌ | ❌ | ❌ | ❌ |
-- 空值判断的错误示例
SELECT emp_name, manager
FROM employee
WHERE manager = NULL;
NULL = 0
NULL != 0
NULL = ''
NULL != ''
NULL = NULL
NULL != NULL
SELECT emp_name, manager
FROM employee
WHERE manager IS NULL;
emp_name|manager
--------|-------
刘备 |
SELECT emp_name, bonus
FROM employee
WHERE bonus IS NOT NULL;
emp_name|bonus
--------|--------
刘备 |10000.00
关羽 |10000.00
张飞 |10000.00
诸葛亮 | 8000.00
孙尚香 | 5000.00
赵云 | 6000.00
法正 | 5000.00
庞统 | 2000.00
蒋琬 | 1500.00
-- PostgreSQL
SELECT 1 ISNULL, 1 NOTNULL;
?column?|?column?|
--------+--------+
false |true |
-- SQLite
SELECT 1 ISNULL, 1 NOTNULL;
1 ISNULL|1 NOTNULL|
--------+---------+
0| 1|
-- MySQL
SELECT isnull(1), isnull(null);
isnull(1)|isnull(null)|
---------+------------+
0| 1|
-- SQL Server 以及 PostgreSQL
SELECT emp_name, manager
FROM employee
WHERE manager IS NOT DISTINCT FROM NULL;
emp_name|manager|
--------+-------+
刘备 | |
-- SQLite
SELECT 1 IS 1, NULL IS 1;
1 IS 1|NULL IS 1|
------+---------+
1| 0|
-- MySQL
SELECT 1<=>2, NULL<=>NULL;
1<=>2|NULL<=>NULL|
-----+-----------+
0| 1|
原文作者:SQL编程思想;如有侵权,请联系管理员删除。