我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

  • IS NULL: 当列的值是NULL,此运算符返回true。
  • IS NOT NULL: 当列的值不为NULL, 运算符返回true。
  • <=>: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在MySQL中,NULL值与任何其它值的比较(即使是NULL)永远返回false,即 NULL = NULL 返回false 。

MySQL中处理NULL使用IS NULL和IS NOT NULL运算符。

实例

尝试以下实例:

root@host# mysql -u root -p password;

Enter password:*******

mysql> use TUTORIALS;

Database changed

mysql> create table tcount_tbl

-> (

-> tutorial_author varchar(40) NOT NULL,

-> tutorial_count  INT

-> );

Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO tcount_tbl

-> (tutorial_author, tutorial_count) values ('mahran', 20);

mysql> INSERT INTO tcount_tbl

-> (tutorial_author, tutorial_count) values ('mahnaz', NULL);

mysql> INSERT INTO tcount_tbl

-> (tutorial_author, tutorial_count) values ('Jen', NULL);

mysql> INSERT INTO tcount_tbl

-> (tutorial_author, tutorial_count) values ('Gill', 20);

mysql> SELECT * from tcount_tbl;

+-----------------+----------------+

| tutorial_author | tutorial_count |

+-----------------+----------------+

| mahran          |             20 |

| mahnaz          |           NULL |

| Jen             |           NULL |

| Gill            |             20 |

+-----------------+----------------+

4 rows in set (0.00 sec)

mysql>

以下实例中你可以看到 = 和 != 运算符是不起作用的:

mysql> SELECT * FROM tcount_tbl WHERE tutorial_count = NULL;

Empty set (0.00 sec)

mysql> SELECT * FROM tcount_tbl WHERE tutorial_count != NULL;

Empty set (0.01 sec)

查找数据表中 tutorial_count 列是否为 NULL,必须使用IS NULL和IS NOT NULL,如下实例:

mysql> SELECT * FROM tcount_tbl

-> WHERE tutorial_count IS NULL;

+-----------------+----------------+

| tutorial_author | tutorial_count |

+-----------------+----------------+

| mahnaz          |           NULL |

| Jen             |           NULL |

+-----------------+----------------+

2 rows in set (0.00 sec)

mysql> SELECT * from tcount_tbl

-> WHERE tutorial_count IS NOT NULL;

+-----------------+----------------+

| tutorial_author | tutorial_count |

+-----------------+----------------+

| mahran          |             20 |

| Gill            |             20 |

+-----------------+----------------+

2 rows in set (0.00 sec)

MySQL的NULL值处理的更多相关文章

  1. Mysql 排序null值 排序问题分析

    mysql中null值的排序问题分析   如下表t_user:  name age zhangsan 1 lisi NULL wangwu 2   www.2cto.com   执行一下sql:  S ...

  2. SQL Server Mysql 对null值理解的不同

    在说到对null值的理解主要是用unique来体现的.也是说null在unique约束看来是一个值还是多个值的问题. 还是开始实验吧. MYSQL create table t(x int ,cons ...

  3. Mysql实现null值排在最前或最后

    最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造. oracle做数据排序的时候,有时候可以用 ...

  4. 为什么不建议给MySQL设置Null值?《死磕MySQL系列 十八》

    大家好,我是咔咔 不期速成,日拱一卒 之前ElasticSearch系列文章中提到了如何处理空值,若为Null则会直接报错,因为在ElasticSearch中当字段值为null时.空数组.null值数 ...

  5. MySQL对NULL值的处理

    mysql: 我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,M ...

  6. 【mysql】mysql null值

    在数据表我们有时候有些表字段会为null,表示空.其实在mysql中null值是占用空间的. mysql手册如下解释 NULL columns require additional space in ...

  7. Mysql的NULL和Empty String

    本文基于Mysql5.7版本的参考资料: https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html https://dev.mysq ...

  8. 【面试】MySQL 中NULL和空值的区别?

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 01 小木的故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那 ...

  9. SQL Server NULL值用法及处理详解

    用法如下: 1.如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录,这意味着该字段将以 NULL 值保存. 2.NULL 用作未知的或不适用的值的占位符. 3.定 ...

随机推荐

  1. 在server2012安装tfs遇到的问题:KB2919355

    参考资料:http://blog.csdn.net/wo_984633714/article/details/52869851 安装tfs2015的时候,提示需要安装KB2919355的更新.然后我就 ...

  2. 一个App从创意到最终上架到App Store里的整个过程是怎样的?

    一个App从创意到最终上架到App Store里的整个过程是怎样的? 制作App需要什么软件?应该看什么书?需要哪些设备?推到App Store里,需要注册什么网站?是否需要付费?需要什么证书之类的? ...

  3. webservice(二)

    ---摘自网络,感谢提供者 WsExplorer和Tcp/Ip Monitor工具本身就存在于eclipse和MyEclipse中 使用工具的原因: 1.  使用工具可以更好的了解WebService ...

  4. ios系统视频播放器MPMoviePlayerController应用遇到的坑

    最近在做视频播放时应用系统MPMoviePlayerController播放器播放视频,发现点击快进快退会出现黑屏现象,并且点击完成按钮也不会返回,代码以及界面如下所示: NSURL *url=[se ...

  5. IMacro 脚本简记

    抓取速卖通纠纷订单详情,生成csv进行统计. var macro1="CODE:";macro1+="VERSION BUILD=8970419 RECORDER=FX& ...

  6. jenkins 杀死衍生进程

    解决方法-1: 在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins衍生进程 解决方法-2: 修改/etc/sysconfig/jenkins配置,在 ...

  7. ZentaoPHP

    1.框架文档http://devel.cnezsoft.com/book/zentaophphelp/about-10.html zentaoPHP二次开发文档http://devel.cnezsof ...

  8. SQL 默认数据库被误删

    我今天也遇到了,自己解决了.这是我总结的:(不管这帖子沉到哪里了) 删除了SQL服务器默认数据库,无法连接服务器,用户[]登录失败. 1,使用管理员账户修改此用户的默认数据库.    企业管理器,展开 ...

  9. Gs_Class._BaseQueryWeb查询页面基类(aspx.net)

    using System;using System.Data;using System.Configuration;using System.Collections;using System.Web; ...

  10. [Q]注册申请码获取工具问题

    问题一: 异常信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.Reflectio ...