这是MySQL一大特殊之处。

概念上。NULL意味着“没有值”或“未知值”,且它被看作有点与众不同的值。

为了測试NULL。你不能使用算术比較运算符比如=、<或!=。为了说明它,试试下列查询:

    mysql> SELECT 1 = NULL, 1 != NULL, 1 < NULL, 1 > NULL;

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

    | 1 = NULL | 1 != NULL | 1 < NULL | 1 > NULL |

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

    | NULL | NULL | NULL | NULL |

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

    非常清楚你从这些比較中得到毫无意义的结果。

相反使用IS NULL和IS NOT NULL操作符:

    mysql> SELECT 1 IS NULL, 1 IS NOT NULL;

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

    | 1 IS NULL | 1 IS NOT NULL |

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

    | 0 | 1 |

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

    在MySQL中。0意味着假而1意味着真。

    NULL值的概念是造成SQL的新手的混淆的普遍原因。他们常常觉得NULL是和一个空字符串''的一样的东西。不是这种。比如。下列语句是全然不同的:

    mysql> INSERT INTO my_table (phone) VALUES (NULL);

    mysql> INSERT INTO my_table (phone) VALUES ("");

    两个语句把值插入到phone列。可是第一个插入一个NULL值而第二个插入一个空字符串。

第一个的含义能够觉得是“电话号码不知道”,而第二个则可意味着“她没有电话”。

    在SQL中,NULL值在于不论什么其它值甚至NULL值比較时总是假的(FALSE)。

包括NULL的一个表达式总是产生一个NULL值。除非在包括在表达式中的运算符和函数的文档中指出。

在下列样例,全部的列返回NULL:

    mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);

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

    | NULL | 1+NULL | CONCAT('Invisible',NULL) |

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

    | NULL | NULL | NULL |

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

    假设你想要寻找值是NULL的列。你不能使用=NULL測试。下列语句不返回不论什么行,由于对不论什么表达式。expr = NULL是假的:

    mysql> SELECT * FROM my_table WHERE phone = NULL;

    要想寻找NULL值,你必须使用IS NULL測试。

下例显示怎样找出NULL电话号码和空的电话号码:

    mysql> SELECT * FROM my_table WHERE phone IS NULL;

    mysql> SELECT * FROM my_table WHERE phone = "";

TIPS:

    在MySQL中,就像非常多其它的SQLserver一样,你不能索引能够有NULL值的列。你必须声明这种列为NOT NULL,并且,你不能插入NULL到索引的列中。

当使用ORDER BY时。首先呈现NULL值。假设你用DESC以降序排序,NULL值最后显示。当使用GROUP BY时。全部的NULL值被觉得是相等的。

    为了有助于NULL的处理,你能使用IS NULL和IS NOT NULL运算符和IFNULL()函数。

对某些列类型,NULL值被特殊地处理。假设你将NULL插入表的第一个TIMESTAMP列,则插入当前的日期和时间。

假设你将NULL插入一个AUTO_INCREMENT列,则插入顺序中的下一个数字。

MySQ学习笔记之十 NULL值处理的更多相关文章

  1. SQL反模式学习笔记14 关于Null值的使用

    目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL NULL 值处理

    MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提供了三大运算符 ...

  3. VSTO学习笔记(十四)Excel数据透视表与PowerPivot

    原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...

  4. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  5. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  6. Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例

    前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...

  7. Binder学习笔记(十二)—— binder_transaction(...)都干了什么?

    binder_open(...)都干了什么? 在回答binder_transaction(...)之前,还有一些基础设施要去探究,比如binder_open(...),binder_mmap(...) ...

  8. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  9. VSTO 学习笔记(十)Office 2010 Ribbon开发

    原文:VSTO 学习笔记(十)Office 2010 Ribbon开发 微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个R ...

随机推荐

  1. 【codeforces 746G】New Roads

    [题目链接]:http://codeforces.com/problemset/problem/746/G [题意] 给你3个数字n,t,k; 分别表示一棵树有n个点; 这棵树的深度t,以及叶子节点的 ...

  2. POJ 2154

    这题的时间卡的.... 必须用欧拉来优化,而且要加素数表.最重要是,因为最后结果要/n,而数据很大,所以,必须在之前就先/n了,否则会爆数据. #include <iostream> #i ...

  3. HDU 2421

    由算术基本定理N=p1^e1*p2^e2....ps^es,可知一个素的因子个数为(e1+1)*(e2+1)*...*(es+1). 而N的一人因子必定也有n=p1^k1*p2^k2....*ps^k ...

  4. Collection 和 Collections 的差别?

    Collection 是 java.util 下的接口,它是各种集合的父接口,继承于它的 接口主要有 Set 和 List:Collections 是个 java.util 下的类.是针对集合的 帮助 ...

  5. 【LeetCode-面试算法经典-Java实现】【145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)】

    [145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bin ...

  6. 深刻理解Docker镜像大小

    都说容器大法好,可是假设没有Docker镜像,Docker该是多无趣啊. 是否还记得第一个接触Docker的时候,你从Docker Hub下拉的那个镜像呢?在那个处女镜像的基础上.你执行了容器生涯的处 ...

  7. Wing IDE 怎样设置 python版本号

    机器上同一时候装了Python3和Python2,使用Wing IDE, 由于Python2和3是有非常大的差别的,所以时不时的须要更改IDE使用的Python版本号.以下介绍方法: 1.打开Edit ...

  8. 90.bower解决js的依赖管理

    转自:https://blog.csdn.net/u011537073/article/details/52951122 前言一个新的web项目开始,我们总是很自然地去下载需要用到的js类库文件,比如 ...

  9. [JZOJ NOIP2018模拟10.20 B组]

    T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...

  10. Resolving Problems installing the Java JCE Unlimited Strength Jurisdiction Policy Files package--转

    原文地址:https://www.ca.com/us/services-support/ca-support/ca-support-online/knowledge-base-articles.tec ...