SQL中Null的注意点
时 间:2016-12-14 08:04:59
作 者:宏鹏 ID:21115 城市:上海
摘 要:SQL中使用Null需要注意的地方
正 文:
在 SQL 语句中, NULL 值与字符列中的空格, 数字中的零, 字符列中的 NULL ASCII 字符都不相同. 大家在写SQL时都会有遇到NULL的经历,例如在一个table插入NULL,与NULL作比较等等.下面介绍SQL 语句中, NULL 值的使用
一、Null不支持大小/相等判断
1、下面的2个查询,不管表 users 中有多少条记录,返回的记录都是0行
select * from users where deleted_at = null;
select * from users where deleted_at != null;
用常规的比较操作符(normal conditional operators)来将 null 与其他值比较是没有意义的。 Null 也不等于 Null
2、将某个值与 null 进行比较的正确方法是使用 is 关键字, 以及 is not 操作符:
select * from users where deleted_at is null;
二、not in 与 Null
1、not in 实例
子查询(subselect)是一种很方便的过滤数据的方法。例如,如果想要查询没有任何包的用户,可以编写下面这样一个查询:
select * from users where id not in (select user_id from packages)
2、假若 packages 表中某一行的 user_id 是 null 的话,返回结果是空的!
3、出现上述的原因
例如
select * from users where id not in (1, 2, null)
这个SQL语句会等效于
select * from users where id != 1 and id != 2 and id != null
4、in查询
select * from users where id in (1, 2, null)
等效于
select * from users where id = 1 or id = 2 or id = null
三、GROUP BY会把NULL分到一个组
insert into test values
(NULL,12),
(NULL,13)
select * from test
select Name,SUM(age)as sumage from test group by Name







结果

四、Null与排序
在排序时, null 值被认为是最大的. 在降序排序时(descending),null值排在了最前面。
例如、下面这个查询是为了根据得分显示用户排名, 但它将没有得分的用户排到了最前面!
select name, points







解决方法:排序前事先对null值进行处理。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)