mysql的不等于和null值问题

背景

为什么mysql不建议使用null值作为列的默认值?明明null值在存储的时候会占用更少的空间,为什么要使用空字符或者0等值来作为默认值呢?

// 查询不到department=null的值
SELECT * FROM employees WHERE department != 'HR';

在 MySQL 中处理“不等于” (!=< >) 时不等于无法获取到null值的行记录信息。

详解

不等于 (!=< >) 运算符

  • 用于比较两个值是否不相等。
SELECT * FROM table WHERE column != value;
SELECT * FROM table WHERE column <> value;

IS NULL 运算符

  • 用于判断某个列是否为 NULL 值。
SELECT * FROM table WHERE column IS NULL;

问题与注意事项

1. NULL 值在比较中的行为

在 SQL 中,NULL 表示缺失的未知数据,因此与任何值(包括 NULL 本身)的比较结果都是 NULL,而不是 TRUEFALSE。这意味着 NULL 不等于任何值,甚至不等于 NULL

例如:

SELECT * FROM table WHERE column != 'value';

如果 column 中有 NULL 值,这些行将不会包含在结果集中,因为 NULL != 'value' 的结果是 NULL,而不是 TRUE

2. IS NULL!= 一起使用

为了正确处理 NULL 值,我们通常需要在条件中显式检查 NULL。例如,下面的查询将返回 column 不等于 'value' 或者 columnNULL 的所有行:

SELECT * FROM table WHERE column != 'value' OR column IS NULL;

这种写法确保了 NULL 值也被正确处理,而不仅仅是被 != 排除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢谷悠扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值