Mysql中运算符和NULL值的比较

NULL值比较

在 MySQL 中,NULL 是一个特殊的值,表示“未知”或“不存在”。与 NULL 进行比较时,结果通常是 NULL,而不是 TRUE 或 FALSE。这是因为 NULL 代表未知值,无法确定它与任何其他值的关系

  1. 比较运算符与 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
      
  2. 逻辑运算符与 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
      
  3. 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
        
  4. 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
      
  5. 聚合函数与 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

posted @ 2025-03-17 21:27  QAQ001  阅读(101)  评论(0)    收藏  举报