Mysql 中is null 和 =null 的区别
在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如
果去运行一下试试的话差别会很大!
为什么会出现这种情况呢?
null 表示什么也不是, 不能=、>、< … 所有的判断,结果都是false,所有只能用 is null进行判断。
默认情况下,推荐使用 IS NOT NULL去判断,因为SQL默认情况下对!= Null的判断会永远返回0行,但没有语法错误
。
如果你一定想要使用!= Null来判断,需要加上这个语句:
set ANSI_NULLS off
这时你会发现IS NOT NULL 和 != null 是等效的
个字段如果设为“NULL”,表示如果这个字段的值为空时,自动插入一个“NULL”值。
一个字段如果设为“NOT NULL”,表示如果这个字段的值为空时,不自动插入“NULL”值(任其无值)。
所以,设为“NULL”的意思反而是“不能无值”(由MYSQL自动赋“NULL”值),而设为“NOT NULL”是“可以无值”
。
其实要证明这一点很简单,建一个测试表,两个字段(VC型),一个设为“NULL”,一个设为“NOT NULL”,两个都
插入空值,看看结果就明白了。
NULL 不是 '' 也不是 0。
你的字段定义为 not null,但是却赋值了一个 null,那么数据库系统会按照该字段类型选择一个默认的值放进去,
比如 char 就是用空字符串。
但注意,空字符串其实已经是一个确定的值了,就是一个长度为 0 的字符串!
至于 NULL 值,给你一个正确的理解:把 NULL 理解为 UNKNOWN。
主要意思是'不知道',就是它可能是任何值;
另外一层意思是'信息缺失',比如某个存储姓名信息的字段值是 NULL,代表姓名信息缺失。
所以 NULL 值不是任意一个确定的值!
举例来说,逻辑 与/或 运算会的吧?
与运算:true and true = true, true and false = false, false and true = false, false and false =
false
第一个 true and null,它的结果完全靠 null 确定。如果它是 true 结果就是 true,如果它是 false,结果就是
false。因为 null 代表不知道,所以结果也是不知道,所以是 null。
第二个 false and null,它的结果不需要靠 null 确定,因为 and 运算的特性,有 false 出 false,所以结果是
false。
第三个 null and null,就好理解了吧,它完全就是空对空了,两个操作数都是不知道,结果自然也是不知道,所以
是 null。
转载于:https://www.cnblogs.com/sunxun/p/4335108.html
Mysql 中is null 和 =null 的区别相关推荐
- mysql中from unixtime,mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别
摘要 腾兴网为您分享:mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别,作业大师,智慧大学,优化大师,先游等软件知识,以及流星蝴蝶剑,升学指导网软件,承德大宗,q ...
- MySQL中B-tree索引和Hash索引区别
在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法: CREATE TABLE t(aid int unsigned not null auto_increment,use ...
- mysql having in_正确理解MySQL中的where和having的区别
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...
- MySQL中CONCAT和GROUP_CONCAT方法的区别
例子表 CREATE TABLE `book` (`id` int(11) NOT NULL AUTO_INCREMENT,`book_name` varchar(255) CHARACTER SET ...
- MySQL中CREATE DATABASE和CREATE SCHEMA区别
文章来源 https://blog.csdn.net/liyanlei5858/article/details/78984100 在使用MS SQL的时候,一般创建数据库我们都习惯于使用CREATE ...
- mysql where 与having_正确理解MySQL中的where和having的区别
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...
- MySQL中CREATE DATABASE和CREATE SCHEMA区别(转)
在使用MS SQL的时候,一般创建数据库我们都习惯于使用CREATE DATABASE 来完成,而使用CREATE SCHEMA来创建架构,但是在MySQL中,官方的中文文档在 CREATE DATA ...
- Mysql中的in和find_in_set的区别?
在mysql中in的使用情况如下: select * from article where 列名 in(值1,值2,值3.....): select * from article where 值1 i ...
- Mysql中where和having用法及区别
1.Mysql中Having和Where用法 当SQL语句中使用聚合函数,然后又需要对聚合函数的记录集进行筛选过滤时,这个时候就需要用到Having子句.如果是在聚合函数前过滤记录用Where,在聚合 ...
- MySQL中的 空值(null)和空字符(‘‘)
目录 长度和判空 ifnull 字段定义为not null,查询的时候也可能返回null 建议 参考 空值(null)和空字符('')是两个比较容易混淆的概念. 本文对两者的区别做简单梳理. 长度和判 ...
最新文章
- 交通信号灯检测与行人过马路策略
- 让烦恼走开 两招让移动硬盘插拔自如
- 机智云5.0推出IoT套件GoKit4.0 可实现物联网应用协同开发
- [Codeforces741D]Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths——dsu on tree
- 回首经典的SQL Server 2005
- Arduino学习笔记07
- 线程停止继续_线程不是你想中断就能中断
- Linux中安装开源JDK(windows的JDK只能安装半开源)
- 爬虫实例6 爬取联英人才网147页招聘信息,并导入数据库
- Java基础知识笔记整理(零基础学Java)
- pdf怎么转换成图片?
- 计算机无法打开pdf文件夹,计算机打开PDF文档时发生错误. 如何修复损坏的文件...
- SpringBoot+FreeMarker+flying-saucer-pdf实现PDF预览、分页需求
- python 乒乓球_python使用pygame实现笑脸乒乓球弹珠球游戏
- MATLAB找勾股数,一种寻找勾股数的方法
- java保存图片_java 保存图片
- Speedoffice 两个方法教你如何在Word文档中划线
- ABAP 针式打印机横向打印问题
- The server time zone value 'EDT' is unrecognized or represents more than one time zone.
- ArchiCAD与Revit深度对比
热门文章
- html5访问电脑或手机摄像头
- 利用DEDE正则批量查找替换数据库的自定义内容
- Flex的动画效果与变换(1)
- Mike Krueger 加入Mono团队
- java write 去bom_Java处理UTF-8带BOM的文本的读写
- 亚太数学建模竞赛优秀论文_全国大学生数学建模竞赛介绍
- java x509certificate2_ASP.NET使用X509Certificate2出现一系列问题的解决方法
- 3-31Pytorch与auto-variabletensor
- acm java 类库_ACM java入门和基本技巧
- mysql注入原理_Mysql报错注入原理分析