当前位置 博文首页 > 文章内容

    你知道mysql中空值和null值的区别吗

    作者:shunshunshun18 栏目:未分类 时间:2021-01-15 14:45:41

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    前言

    最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值。以下带来示例给大家进行讲解。

    建表

    create table test (colA varchar(10) not null,colB varchar(10) null);

    向test表中插入数据

    插入colA为null的数据

    insert into test values (null,1);

    此时会报错,因为colA列不能为null。

    插入colB为null的数据

    insert into test values (1,null);

    发现插入成功。

    插入都为空的数据

    insert into test values ('','');

    插入colA为空的数据

    insert into test values ('',null);

    发现向colA一列插入空值成功,而colB列既可以插入空值,也可以插入NULL值。
    总结一下,定义为NOT NULL的字段只能插入空值,不能插入null值,而NULL字段可以插入空值,也可以插入null值。

    插入都不为空的数据

    insert into test values (1,2);

    开始查询




    可以发现 is not null 只会过滤为null值的列,而<>会同时过滤空值和null值,所以要根据实际情况选择过滤方式。
    另外,判断null值只能用 is null 或 is not null ,不能用 = 或 <>。

    特别注意

    1、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。

    2、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用ifnull()函数来进行处理,判断空字符用 = 或者 <> 来进行处理

    3、对于MySQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是当前系统时间。插入空值,则会出现 ‘0000-00-00 00:00:00'

    4、对于空值的判断到底是使用is null 还是 = 要根据实际业务来进行区分。

    5、当使用ORDER BY时,首先呈现NULL值。如果你用DESC以降序排序,NULL值最后显示。当使用GROUP BY时,所有的NULL值被认为是相等的,故只显示一行。

    总结