mysql字段为null为何不能使用!=
作者:sxylalala11
这篇文章主要介绍了mysql字段为null为何不能使用!=问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
mysql字段为null不能使用!=
数据库表中某一字段(mark)默认值为NULL,进行where语句查询时mark!=‘xxxx’,并不能将字段为NULL的数据查询出来。
1、mysql中空值不占空间,null值占空间。
2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。
3、判断NULL 用IS NULL 或者 is not null,判断空字符用 =’‘或者<>’'来进行处理。
4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会被系统自动忽略掉,但是空值是会进行统计到其中的。
5、MySql中如果某一列中含有NULL,那么包含该列的索引就无效了。这一句不是很准确。(???)
6、对于MySQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是当前系统时间。插入空值,则会出现 0000-00-00 00:00:00
7、NULL值到非NULL的更新无法做到原地更新,更容易发生索引分 裂,从而影响性能。(???)
如果想查出字段为null的数据,可以使用:
SELECT * FROM A WHERE B1 != 1 OR B1 is Null SELECT * FROM A WHERE IFNULL(B1,'') != 1
set ANSI_NULLS off,这时你会发现IS NOT NULL 和 != null 是等效的
mysql语句“!=“使用注意事项
当我们使用mysql的!=的时候,要注意一点的是!=只会筛选该字段非空的数据,如果查询的表中有字段为null,这些数据都不会被查询出来,即时他!=某个数据
例如:
select * from test where type != 2
test表中 type 存在 1 ,2,null
那么该查询语句只会筛选出type为1的数据,即使 null也不等于2
建议使用:
select * from test where (type != 2 or type is null)
或者
select * from test where ifnull(type,"")!= 2
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。