NULL 值处理

简介: NULL 值处理

说明:


NULL是什么,查询条件某字段时某一行这个字段或其他行这个字段没有值 所以查询出来为 NULL 。


为了处理这种情况,MySQL提供了三大运算符如下:


IS NULL: 当列的值是 NULL,此运算符返回 true。

IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

<=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。


NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。


处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。


1、建表

DROP TABLE IF EXISTS `text_null`;

CREATE TABLE `text_null` (

 `id` int(11) NOT NULL,

 `text_title` char(10) COMMENT '书名',

 `text_author`char(10) COMMENT '作者',

   `price`double COMMENT '价格',

 PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO text_null (id,text_title,text_author,price) values (1,'百科全书解决空值','火爆的后槽牙儿',6.66);

INSERT INTO text_null (id,text_title,text_author,price) values (2,'这是一本书','小王',NULL);

INSERT INTO text_null (id,text_title,text_author,price) values (3,'西游记','作者',NULL);


2、演示

2.1、查看新建的表数据

SELECT * from text_null;


2.2、演示 = 和 != 运算符

SELECT * from text_null  where price = null;

SELECT * from text_null where price != NULL;



可以看到 = 和 != 运算符是不起作用的


2.3、使用 IS NULL 和 IS NOT NULL

SELECT * from text_null where price IS NULL;

SELECT * from text_null where price IS NOT NULL;


相关文章
|
3月前
|
存储 弹性计算 运维
添加两个值
【4月更文挑战第29天】
19 4
|
3月前
|
存储 弹性计算 运维
添加多个值
【4月更文挑战第29天】
16 2
|
3月前
59.已知xxz+yzz=532,求所有可能的x,y,z的值
59.已知xxz+yzz=532,求所有可能的x,y,z的值
32 0
|
前端开发
根据数组code值返回value值
根据数组code值返回value值
62 0
声明了Integer类型的两个数值并且值相等,但为什么返回了false?
声明了Integer类型的两个数值并且值相等,但为什么返回了false?
177 0
TS之任意值
任意值(Any)用来表示允许赋值为任意类型。
191 0
算法将一个对象中的某一个key值变为true,其他值都为false
算法将一个对象中的某一个key值变为true,其他值都为false
|
关系型数据库 MySQL RDS
timestamp类型在not null时可以插入null值?
背景 有同学问在RDS MySQL 5.6在timestamp 设置为 not null 并且SQL模式是严格模式时,仍然可以插入空值,理论上应该有报错,是不是RDS的bug? 环境 MySQL 5.
2408 0