MYSQL NULL值特性
NULL是一种“没有类型”的值,通常表示“无值”,“未知值”,“缺失值”,“超界”,“不在其中”等,我们在日常运用中很容易和NULL字符串混淆,这里大致整理了下NULL值的一些特性,以便能够正确使用NULL值。
1,创建表时字段时若未添加默认值,则默认为NULL值


2,NULL值和NULL字符串的区别
1)NULL值不区分大小写,查询时都显示为大写NULL,而NULL字符串则显示为插入时候的大小写,查询的时候根据字符集是否区分大小写筛选,或者通过语句级的collate或binary指定是否区分大小写。
2)NULL字符串可以当作普通字符串进行处理,而NULL值的判断只有is null和 is not null,见第5点


3,插入数据时若不指定值,如果没其它默认值,会用默认值NULL

4,当插入大写NULL字符时,就很难区别NULL是NULL值还是NULL字符串了,这时需要用到NULL值的判断,NULL值的判断只有is NULL和is not NULL

通过肉眼很难区别,这里通过NULL值的判断,可以看到id2为NULL值的只有3行,非NULL值的有7行,而为NULL字符串的有4行

5,SQL里面对NULL值的处理函数有isnull(expr)(返回is NULL的逻辑判断结果)和ifnull(expr1,expr2)(如果expr1 is null则返回expr2,否则返回expr1)

6,和NULL值的比较运算和算术运算,结果仍为NULL值,但是<=>运算符时,NULL<=>NULL为真



7,和NULL值的逻辑运算,is NULL运算只有null is null为真返回数字1,is not NULL运算只有 null is not null为假返回数字0

8,mysql会把单独的\N(区分大小写)当作NULL值

9,NULL值和空字符’’不一样,查询字段为空字符时,可以用等号,不考虑长度,都显示为空,但是长度不一样





10,空字符和其他字符做算术运算时当作0处理,但是当做分母时运算结果为NULL

11,NULL值会被count(字段)函数过滤,但是在count(*)中不会被过滤



12,在group by函数中NULL会当作同一个值放在最最小值前

13,其他一些函数中如果有NULL值,返回结果为NULL,如:

MYSQL NULL值特性的更多相关文章
- MySQL NULL 值处理
MySQL NULL 值处理 我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了 ...
- 二十一、MySQL NULL 值处理
MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...
- DB-MySQL:MySQL NULL 值处理
ylbtech-DB-MySQL:MySQL NULL 值处理 1.返回顶部 1. MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数 ...
- mysql null值处理详细说明
在讲null之前,我们先看一个例子 表数据如下: 3306>select * from t1; +------+-------+ | id | name | +------+-------+ | ...
- MySQL NULL值
我们已经看到SQL SELECT命令和WHERE子句一起使用,来从MySQL表中提取数据, 但是,当我们试图给出一个条件,比较字段或列值设置为NULL,它确不能正常工作. 为了处理这种情况,MySQL ...
- Oracle 与 Mysql NULL值,空字符串''的区别
Oracle(null等同于空字符'') 1.oracle插入空字符串默认替换成null 2.oracle查询(null和被替换的空字符)时使用 is null/is not null 3.使用聚合函 ...
- 【mysql】mysql null值
在数据表我们有时候有些表字段会为null,表示空.其实在mysql中null值是占用空间的. mysql手册如下解释 NULL columns require additional space in ...
- MySQL NULL 值如何处理?
我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提 ...
- mysql null 值查询问题
我在开发公司内部的一个项目时遇到一个问题:select student_quality_id from STUDENT_QUALITY where mark_status=0 and batch_st ...
随机推荐
- 写点C++ 学习记录 充数
#include "stdafx.h" #include <cstdlib> #include <iostream> using namespace std ...
- 2018.09.19 atcoder AtCoDeer and Election Report(贪心)
传送门 很有意思的一道贪心. 就是每次翻最小的倍数来满足条件. 代码: #include<bits/stdc++.h> #define ll long long using namespa ...
- 2018.09.07 bzoj1096: [ZJOI2007]仓库建设(斜率优化dp)
传送门 斜率优化dp经典题. 令f[i]表示i这个地方修建仓库的最优值,那么答案就是f[n]. 用dis[i]表示i到1的距离,sump[i]表示1~i所有工厂的p之和,sum[i]表示1~i所有工厂 ...
- AlertDialog设计对话框
MainActivity.java public class MainActivity extends Activity { TextView show; Str ...
- MFC中添加新的对话框
MFC工程中,除了系统自动生成的一些对话框之外,还需要根据自己的需求,添加新的对话框.这里总结下自己最近使用的方法. 首先,找到Resource View中自己新建的工程,然后右键,选择Add Cla ...
- hdu2571 命运 2016-09-11 16:54 53人阅读 评论(0) 收藏
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- D3 API总览
D3图形库API参考 https://github.com/d3/d3/wiki/API--%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8C d3 官网 API https:/ ...
- springmvc 孔浩 hibernate
以上为项目文件 用到的jar包:http://pan.baidu.com/s/1kT1Rsqj 1. model-User 2. beans.xml-去哪些包中找annotation:查找相应的实体类 ...
- 深入浅析Node.js单线程模型
Node.js采用 事件驱动 和 异步I/O 的方式,实现了一个单线程.高并发的运行时环境,而单线程就意味着同一时间只能做一件事,那么Node.js如何利用单线程来实现高并发和异步I/O?本文将围绕这 ...
- asp.net-分析器错误消息: 服务器标记的格式不正确。
大多数都是引号造成的 错误: <asp:LinkButton ID="btnRefund" runat="server" CommandName=&quo ...