MySQL NULL处理
-- 首先在用户表中插入数据如下
TRUNCATE TABLE UserInfo ;
INSERT INTO `userinfo`(`ID`,`UserName`,`UserLogin`,`UserPassword`,`UserEmail`,`UserType`)
VALUES (1,'张三','zhangsan','zhangsan','zhangsan@qq.com',1),
(2,'李四','lisi','lisi','lisi@qq.com',2),
(3,'王五','wangwu','wangwu','wangwu@qq.com',1),
(4,'赵六','zhaoliu','zhaoliu','zhaoliu@qq.com',3),
(5,'赵六','zhaoliu1','zhaoliu1','zhaoliu1@qq.com',3),
(6,NULL,'test1','test1',NULL,NULL),
(7,NULL,'test2','test2',NULL,NULL),
(8,NULL,'test3','test3',NULL,NULL),
(9,'','TEST5','TEST5','',1),
(10,'','TEST6','TEST6','',2),
(11,'','TEST7','TEST7','',3),
(12,'','TEST8','TEST8','',1),
(13,'','TEST9','TEST9','',2),
(14,'','TEST0','TEST0','',3);

-- 查询用户名为空(null)的用户信息
SELECT * FROM UserInfo WHERE userName IS NULL ;

SELECT * FROM UserInfo WHERE ISNULL(UserName) ;

-- 查询用户名为空字符串('') 的用户信息
SELECT * FROM UserInfo WHERE UserName ='' ;

-- 查询用户名为 不为空(null)的用户信息 !=null 和 is not null 是不同的 默认情况下 !=null 返回0行结果
筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实运行结果差别很大!
null 表示什么也不是, 不能=、>、< … 所有的判断,结果都是false,所有只能用 is null进行判断。默认情况下,推荐使用 is not null去判断,因为SQL默认情况下对 !=null 的判断会永远返回0行,但没有语法错误;
SELECT * FROM UserInfo WHERE userName IS NOT NULL ;

SELECT * FROM UserInfo WHERE UserName != NULL ;

-- 查询用户名 不为空字符串('') 并且不为空(null) 的用户信息
SELECT * FROM UserInfo WHERE UserName <> '' ;

-- 还有一个问题就是count(columnName)函数是不统计null值的
SELECT COUNT(*) FROM UserInfo ;

SELECT COUNT(UserName) FROM UserInfo ;

-- IFNULL函数使用
-- IFNULL(expr1,expr2) 如果expr1不是NULL,返回expr1,否则它返回expr2。
SELECT *,IFNULL(UserName,'无效用户') AS Remark FROM UserInfo

SELECT IFNULL(0,1) ;

SELECT IFNULL(0/1,'代替null') ;.

SELECT IFNULL(1/0,'代替null') ;

-- 扩展IF函数
-- IF(expr1,expr2,expr3) 如果expr1是TRUE(expr1<>0且expr1<>NULL),返回expr2,否则它返回expr3。
SELECT IF(TRUE,'true值','false值') ;

SELECT IF(FALSE,'true值','false值') ;

SELECT IF(1>2,1,2) ;

SELECT IF(1<2,2,1) ;

MySQL NULL处理的更多相关文章
- MySQL NULL 值处理
MySQL NULL 值处理 我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了 ...
- Oracle 与 Mysql NULL值,空字符串''的区别
Oracle(null等同于空字符'') 1.oracle插入空字符串默认替换成null 2.oracle查询(null和被替换的空字符)时使用 is null/is not null 3.使用聚合函 ...
- 二十一、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 使用带来的坑
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...
- mysql NULL函数 语法
mysql NULL函数 语法 作用:如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录.这意味着该字段将以 NULL 值保存. 说明:NULL 值的处理方式与其 ...
- mysql null值处理详细说明
在讲null之前,我们先看一个例子 表数据如下: 3306>select * from t1; +------+-------+ | id | name | +------+-------+ | ...
- mysql=null的优雅解决方法
对于不是采用所有字段都是not null的mysql表设计而言,mysql提供了一个<=>操作符. 在oracle中我们的处理方式通常类似: where a = #{var} or #{v ...
- mysql null值的特殊处理
实例 尝试以下实例: root@host# mysql -u root -p password; Enter password:******* mysql> use RUNOOB; Databa ...
- mysql null值问题
mysql> create table test( sn int, -> `createdTime` datetime NOT NULL COMMENT '创建时间', -> `up ...
随机推荐
- Elasticsearch入门之从零开始安装ik分词器
起因 需要在ES中使用聚合进行统计分析,但是聚合字段值为中文,ES的默认分词器对于中文支持非常不友好:会把完整的中文词语拆分为一系列独立的汉字进行聚合,显然这并不是我的初衷.我们来看个实例: POST ...
- ZooKeeper基础CRUD操作
==============================Curator Java 客户端 CRUD 使用==============================Curator 是 Apache ...
- [Java JNI] [Windows] [Visual Studio] [DLL] [UnsatisfiedLinkError]
有时候使用 GCC for Windows 生成 DLL 动态链接库时, 由于各种原因, 即使加载了动态链接库, JVM 仍然找不到符号, 从而产生 java.lang.UnsatisfiedLink ...
- Unicode与UTF8
举一个例子:It's 知乎日报 你看到的unicode字符集是这样的编码表: I 0049 t 0074 ' 0027 s 0073 0020 知 77e5 乎 4e4e 日 65e5 报 62a5 ...
- 俄罗斯方块部分功能(Java)
package OO.day01; public class TetrisCell { int totalRow = 20; int totalcol = 10; //定义横宽 int row; in ...
- 【python小练】0017-将xls文件内容写入xml文件中
第 0017 题: 将 第 0014 题中的 student.xls 文件中的内容写到 student.xml 文件中,如 下所示: <?xml version="1.0" ...
- 新闻类App顶部菜单栏封装
概述 最近有一个需求,类似今日头条顶部的菜单栏.唯一区别是需要带可移动的下划线.网上查找资料,发现解决方案大部分是用UIScrollView实现.下方VC控制用UICollectionView.这样可 ...
- Mysql 忘记密码
Mysql 忘记密码,跳过密码登陆,在更改密码. Linux 系统: 1.查看平时进程:杀掉mysql进程. kill -TERM mysqld 或者 : ps -ef | grep mysqld | ...
- vue-组件命名
vue的组件命名,不能带有大写字母. 正确的写法: components:{ 'myder':av } 错误写法: components:{ 'myDer':av }
- 2017ICPC南宁 M题 The Maximum Unreachable Node Set【二分图】
题意: 找出不能相互访问的点集的集合的元素数量. 思路: 偏序集最长反链裸题. 代码: #include<iostream> #include<cstring> using n ...