mysql查询时,要查询比较两个字段不相等的数据,其中有字段为null,查不出来
·
当使用 where field1<>field2 查询时,如果 field1 或 field2 中有一个值为 NULL,则该查询结果将不会返回任何行。这是因为在 SQL 中,任何与 NULL 进行比较的表达式都会得到 NULL,而不是 true 或 false。
解决方法:
在 MySQL 中,可以使用 IS NULL 和 IS NOT NULL 运算符来测试一个字段是否为 NULL。因此,如果要查询 field1 和 field2 不相等的所有行,可以使用以下查询:
SELECT * FROM table_name WHERE field1 IS NULL AND field2 IS NOT NULL OR field1 IS NOT NULL AND field2 IS NULL OR field1 <> field2;
该查询将返回所有 field1 和 field2 不相等的行,包括其中一个字段为 NULL 的情况。
另外,也可以使用 COALESCE 函数将 NULL 值转换为一个非 NULL 值,例如:
SELECT * FROM table_name WHERE COALESCE(field1, '') <> COALESCE(field2, '');
在上面的查询中,将 NULL 转换为一个空字符串,这样就可以比较两个字段是否相等。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)