使用 MySQL 中,如果查询字符串时使用“!=”条件,当字段值为 Null 时也会满足该条件。

示例表:

id name url
1 张三 www.codesou.cn
2 李四
3 王五 NULL
user 表

查询语句:

select * from user where url != 'www.codesou.cn';

返回结果:

id name url
2 李四
user 表

我们的需求是返回 id 为 2 和 3 的两条记录,因为其中 2 的 url 为空字符串,3 的 url 为 NULL,从字面意思来讲都不等于 www.codesou.cn 。但实际上在 MySQL 中只返回了 id 为 2 的记录。

解决办法是补充对 null 的判断,比如:

select * from users where url != "www.codesou.cn" or url is null

当然,如果创建数据表时没有特殊要求的话,MySQL 字段强烈不建议设置 null 为默认值,字符串类型默认值:空字符串即可,这也是 MySQL 数据库设计的一个推荐规范。