元祖字段存在NULL值时“非值”比较查询异常

在 SQL 中,当字段 a 的值为 1、0 或 NULL 时,查询条件 a != 1 的结果如下:

  • 值为 0 的记录‌: 会被包含在结果中,因为 0 != 1 为真。
  • 值为 NULL 的记录‌:‌ 不会‌被包含在结果中,因为 NULL 与任何值(包括自身)的比较结果都是 UNKNOWN,而 SQL 的 WHERE 子句只保留结果为 TRUE 的行。
  • 值为 1 的记录‌: 被排除,符合 != 1 的逻辑。

因此,‌最终查询结果仅包含 a = 0 的记录‌,a = NULL 的记录不会被返回。

⚠️ 注意:这是 SQL 标准中三值逻辑(True/False/Unknown)的典型行为。若希望同时包含 NULL 值,需显式添加条件:a != 1 OR a IS NULL。

如需同时获取 0 和 NULL 的记录,可尝试修改查询条件为 a != 1 OR a IS NULL。

posted @ 2025-12-31 17:33  庶旁  阅读(10)  评论(0)    收藏  举报