MySQL中有关NULL的计算
mysql> select NULL=NULL; #判断两个NULL是否相等,结果不是1也不是0 +-----------+ | NULL=NULL | +-----------+ | NULL | +-----------+ 1 row in set (0.00 sec) mysql> select NULL<>NULL,NULL!=NULL; #判断两个NULL是否不相等,结果不是1也不是0 +------------+------------+ | NULL<>NULL | NULL!=NULL | +------------+------------+ | NULL | NULL | +------------+------------+ 1 row in set (0.00 sec) mysql> select NULL<=>NULL; #判断两个NULL是否相等 +-------------+ | NULL<=>NULL | +-------------+ | 1 | +-------------+ 1 row in set (0.00 sec) mysql> select NULL is NULL; #判断两个NULL是否相等 +--------------+ | NULL is NULL | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec) mysql> select NULL is NOT NULL; #判断两个NULL是否不相等 +------------------+ | NULL is NOT NULL | +------------------+ | 0 | +------------------+ mysql> select not NULL; #对NULL取非 +----------+ | not NULL | +----------+ | NULL | +----------+ 1 row in set (0.00 sec) mysql> select 1 and NULL, NULL and NULL; +------------+---------------+ | 1 and NULL | NULL and NULL | +------------+---------------+ | NULL | NULL | +------------+---------------+ 1 row in set (0.00 sec) mysql> select 1 or NULL, NULL or NULL,0 or NULL; +-----------+--------------+-----------+ | 1 or NULL | NULL or NULL | 0 or NULL | +-----------+--------------+-----------+ | 1 | NULL | NULL | +-----------+--------------+-----------+ 1 row in set (0.00 sec)
总结:
尽量使用 <=>、is null 、is not null 对NULL进行判断,否则得到的结果都是NULL;
NULL进行与和非运算时,结果都是null,然后NULL和一个值为true的值取或,结果为1,否则结果都为NULL;
上面的总结比较混乱,因为NULL可以理解为一个变量的值是未知的,他可能为true,可能为false(相对于bool值),那么在进行运算时,就要考虑两种情况,其中一种情况为false时,总的结果就是NULL。
如需转载,请注明文章出处,谢谢!!!