Mysql中运算符和NULL值的比较

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

相关推荐