MySQL NULL处理

-- 首先在用户表中插入数据如下

TRUNCATE TABLE UserInfo ;

INSERT  INTO `userinfo`(`ID`,`UserName`,`UserLogin`,`UserPassword`,`UserEmail`,`UserType`)

VALUES (1,‘张三‘,‘zhangsan‘,‘zhangsan‘,‘[email protected]‘,1),

(2,‘李四‘,‘lisi‘,‘lisi‘,‘[email protected]‘,2),

(3,‘王五‘,‘wangwu‘,‘wangwu‘,‘[email protected]‘,1),

(4,‘赵六‘,‘zhaoliu‘,‘zhaoliu‘,‘[email protected]‘,3),

(5,‘赵六‘,‘zhaoliu1‘,‘zhaoliu1‘,‘[email protected]‘,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) ;

时间: 2024-12-15 22:26:15

MySQL NULL处理的相关文章

mysql null 取消必填 default value

MySQL 1364 错误提示:#1364 - Field "details" doesn't have a default value.大概意思是:details字段没有默认的数值:也就是说我们没有为其分配数值,而表中此字段也没有设置默认值.这是MySQL5出来后搞出来的东东,认真看一下my.ini文件中有这样一段: my.ini中相关代码 # Set the SQL mode to strict # sql-mode="STRICT_TRANS_TABLES,NO_AUT

DB-MySQL:MySQL NULL 值处理

ylbtech-DB-MySQL:MySQL NULL 值处理 1.返回顶部 1. MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true. IS NOT NULL: 当列的值不为 NULL, 运算符返回 true. <=>: 比较操作符(不

mysql null值处理详细说明

在讲null之前,我们先看一个例子 表数据如下: 3306>select * from t1; +------+-------+ | id | name | +------+-------+ | 1 | chen | | 2 | zhang | | 3 | NULL | +------+-------+ 3 rows in set (0.00 sec) 然后我们想查出所有名字不为'chen'的其它行记录,我们有可能这样写: 3306>select * from t1 where name!='

mysql null值的特殊处理

实例 尝试以下实例: [email protected]# mysql -u root -p password; Enter password:******* mysql> use RUNOOB; Database changed mysql> create table tcount_tbl -> ( -> runoob_author varchar(40) NOT NULL, -> runoob_count INT -> ); Query OK, 0 rows aff

mysql=null的优雅解决方法

对于不是采用所有字段都是not null的mysql表设计而言,mysql提供了一个<=>操作符. 在oracle中我们的处理方式通常类似: where a = #{var} or #{var} is null 或者 where a = nvl(#{var},' ') or nvl(#{var},' ') = ' ' 在mysql中则是: where a = ifnull(#{var},' ') or ifnull(#{var},' ') = ' ' 或者: where a= #{var} o

mysql null 值查询问题

我在开发公司内部的一个项目时遇到一个问题:select student_quality_id from STUDENT_QUALITY where mark_status=0 and batch_stauts in (2,3)结 果遇到一直找不到符合条件的student_quality_id ,后来才发现没有考虑到null值的问题,修改成 select student_quality_id from STUDENT_QUALITY where (mark_status=0 or mark_sta

MySQL NULL值

我们已经看到SQL SELECT命令和WHERE子句一起使用,来从MySQL表中提取数据, 但是,当我们试图给出一个条件,比较字段或列值设置为NULL,它确不能正常工作. 为了处理这种情况,MySQL提供了三大运算符 IS NULL: 如果列的值为NULL,运算结果返回 true IS NOT NULL: 如果列的值不为NULL,运算结果返回 true <=>: 运算符比较值,(不同于=运算符)即使两个空值它返回 true 涉及NULL的条件是特殊的.不能使用= NULL或!= NULL来匹配

mysql &lt;=&gt; null 问题

SELECT * FROM cms_user WHERE age=NULL; Empty set (0.03 sec) 查询表中记录age值为null mysql> SELECT * FROM cms_user WHERE age<=>NULL; +----+----------+----------+-------------+------------+----------+-------+------+ | id | username | password | email      

MySQL NULL 值如何处理?

我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true. IS NOT NULL: 当列的值不为 NULL, 运算符返回 true. <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true. 关于 NULL 的条件比较运算是比较特殊的.你不

MySQL NULL 值处理

我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true. IS NOT NULL: 当列的值不为 NULL, 运算符返回 true. <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true. 关于 NULL 的条件比较运算是比较特殊的.你不