Mysql中运算符和NULL值的比较
NULL值比较
在 MySQL 中,NULL 是一个特殊的值,表示“未知”或“不存在”。与 NULL 进行比较时,结果通常是 NULL,而不是 TRUE 或 FALSE。这是因为 NULL 代表未知值,无法确定它与任何其他值的关系
-
比较运算符与 NULL
-
当使用比较运算符(如 =、!=、>、< 等)与 NULL 进行比较时,结果总是 NULL
-
NULL 与任何值(包括 NULL 本身)的比较结果都是 NULL
-
这是因为 NULL 表示未知值,无法确定它是否等于、大于或小于其他值
SELECT NULL = NULL; -- 结果为 NULL SELECT NULL != NULL; -- 结果为 NULL SELECT NULL > 0; -- 结果为 NULL SELECT NULL < 0; -- 结果为 NULL SELECT NULL = 0; -- 结果为 NULL SELECT NULL != 0; -- 结果为 NULL
-
-
逻辑运算符与 NULL
-
当 NULL 参与逻辑运算(如 AND、OR、NOT)时,结果取决于具体的逻辑规则
SELECT TRUE AND NULL; -- 结果为 NULL SELECT FALSE AND NULL; -- 结果为 FALSE SELECT TRUE OR NULL; -- 结果为 TRUE SELECT FALSE OR NULL; -- 结果为 NULL SELECT NOT NULL; -- 结果为 NULL
-
-
IS NULL 和 IS NOT NULL
-
为了检查某个值是否为 NULL,MySQL 提供了专门的运算符
-
IS NULL:判断是否为 NULL
-
IS NOT NULL:判断是否不为 NULL
SELECT NULL IS NULL; -- 结果为 TRUE SELECT 0 IS NULL; -- 结果为 FALSE SELECT NULL IS NOT NULL; -- 结果为 FALSE SELECT 0 IS NOT NULL; -- 结果为 TRUE
-
-
-
IN 和 NOT IN 与 NULL
-
IN 子句:如果 NULL 在列表中,且比较的值不在列表中,结果为 NULL
-
NOT IN 子句:如果 NULL 在列表中,且比较的值不在列表中,结果为 NULL
SELECT 1 IN (1, 2, NULL); -- 结果为 TRUE SELECT 3 IN (1, 2, NULL); -- 结果为 NULL SELECT 1 NOT IN (1, 2, NULL); -- 结果为 FALSE SELECT 3 NOT IN (1, 2, NULL); -- 结果为 NULL
-
-
聚合函数与 NULL
- MySQL 的聚合函数(如 COUNT、SUM、AVG 等)会忽略 NULL 值
- 如果所有值都是 NULL,则返回 NULL
- COUNT(column):只统计非 NULL 值的行数。COUNT(*)会统计null值
- SUM(column):忽略 NULL 值,只计算非 NULL 值的总和。
- AVG(column):忽略 NULL 值,只计算非 NULL 值的平均值。
- MIN(column) 和 MAX(column):忽略 NULL 值
where中使用null值判断
如果在 WHERE 子句中直接使用 NULL,查询结果会返回空集(即没有行满足条件)。这是因为 NULL 表示未知值,无法与任何值(包括 NULL 本身)进行比较,因此条件 NULL 会被视为 FALSE

浙公网安备 33010602011771号