【转】oracle中的NULL、''(空字符串)以及'_'(空格)
在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑?
1、NULL和''(空字符串)是一个意思
注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格。
举个例子:
--建表
create table tbl_a (col_a varchar2(1), col_b int); -- 造数据
insert into tbl_a values(‘_’, 1); -- 插入空格
insert into tbl_a values(‘’, 2); -- 插入空字符串
insert into tbl_a values(null, 3); -- 插入NULL
以上SQL执行成功后,执行select来检查:
select count(*) from tbl_a; -- 结果是 3
select count(*) from tbl_a where col_a = ‘_’; -- 结果是 1
select count(*) from tbl_a where col_a = ‘’; -- 结果是 0
select count(*) from tbl_a where col_a is null; -- 结果是 2
注意:由于''(空字符串)默认被转换成了NULL,不能使用 = ''作为查询条件。也不能用 is ''。虽然不会有语法错误,但是不会有结果集返回。只能用is null,不等于就是 is not null。
进一步验证:
select nvl(col_a, ‘a’) from tbl_a;
结果:

原来,在Oracle中,null和''(空字符串)是一个意思。
2、分析函数与NULL
在使用AVG,MAX,SUM,COUNT等函数时,为NULL的记录会被忽略。
再插入几条数据:
insert into tbl_a values(null, null); -- 插入NULL
-- 执行成功。
-- 再次证明,’’ 被当作了null处理.
-- 因为该字段是 int 类型,如果是字符串,执行会报错
insert into tbl_a values(‘a’, ‘’);
查看数据:
select * from tbl_a;
结果如下:

注:_代表空格,其余空白处表示NULL
验证:
select AVG(col_b) from tbl_a; -- 结果为 2 ,NULL的纪录行忽略掉了
select MAX(col_b) from tbl_a; -- 结果为 3
select SUM(col_b) from tbl_a; -- 结果为 6
select COUNT(col_b) from tbl_a; -- 结果为 3
select COUNT(col_a) from tbl_a; -- 结果为 2
select COUNT(*) from tbl_a; -- 结果为 5
3、排序时,NULL作为无穷大处理
例:
select * from tbl_a order by col_b desc ;
结果如下:

转载自《oracle中的NULL、''(空字符串)以及'_'(空格)》
【转】oracle中的NULL、''(空字符串)以及'_'(空格)的更多相关文章
- Oracle中的NULL、’’(空字符串)以及’_’(空格)
本文首发于 http://youngzy.com/ 在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? null和’’(空字符串)是一个意思 注: 为了便于 ...
- Oracle中的null与空字符串''的区别
含义解释:问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零.ORACLE允许任何一种数据类型的字段为空,除了以下 ...
- Oracle中长度为0字符串与null等价
不试不知道,Oracle中,长度为0的字符串'' 居然与null等价! 众所周知,null代表空,什么都不存在,而一个字符串'',虽然长度为0,但毕竟已经是一个字符串,二者怎么能等价,混为一谈呢. 在 ...
- DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值
比如要求取出微信绑定的,没有解绑的 未绑定,指定字段为null 绑定的,指定字段为某个字符串 解绑的,有的客户用的是更新指定字段为1,有的客户更新指定字段为‘1’ 脏数据的存在,比如该字段为空字符 ...
- 刚从一道题发现的一些东西,PHP笔记,关于extract和null 空字符串
队友发给我的一道extract变量的最基础的题目,他发现了一些问题,当传入shiyan=&flag=0时出flag,当传入shiyan=0&flag=0时不出flag,传入shiyan ...
- Oracle中的null
测试数据:公司部分员工基本信息
- oracle 中的null与''
1.先看看Null与''在oracle中的表现 C:\Users\zen>sqlplus hr/hr SQL Production :: Copyright (c) , , Oracle. Al ...
- 关于JavaScript中0、空字符串、'0'是true还是false的总结
最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true ...
- oracle中空值null的判断和转换:NVL的用法
1.NULL空值概念 数据库里有一个很重要的概念:空值即NULL.有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在. 2.NULL空值判断 空值不等同于 ...
随机推荐
- IDEA 工具自动生成JavaBean类
1.先安装GsonFormat插件:File-->Setting-->Plugins-->GsonFormat-->OK 2.new 一个新的Class空文件,然后 Alt+I ...
- 11 K-Means 原理及案例
11 K-Means 原理及案例 非监督学习 unsupervised learning (非监督学习) ,只有特征值,没有目标值 聚类: 主要方法 - k-means (K - 需要分成的类别数) ...
- 七、3Dslicer的坐标系
一.参考博客 https://blog.csdn.net/Huadong_eddy/article/details/84988166
- 集合系列 List(四):LinkedList
LinkedList 是链表的经典实现,其底层采用链表节点的方式实现. public class LinkedList<E> extends AbstractSequentialList& ...
- git中报错---fatal: pathspec 'readme.txt' did not match any files
1.git安装 git官网下载最新版本,一键安装或custom install. 2.会弹出一个类似的命令窗口的东西,就说明Git安装成功. 3.安装完成后,还需要最后一步设置,在命令行输入如下--- ...
- Linux 部署 java1.8
1.安装 查看java安装包 yum list | grep java 使用yum安装 yum install java-1.8.0-openjdk.x86_64 修改环境变量 vi /etc/pro ...
- go语言之数组
1.go语言的数组和python的列表不一样,python的列表没有限定类型,而go的数组限定的类型,理由是这样的,请看下面的图 go语言的数组会数组中第一个值的内存地址,在我们上面的例子中,数组中的 ...
- 你可能会忽略的 Git 提交规范
一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目 ...
- RabbitMQ与Spring的框架整合之Spring Boot实战
1.RabbitMQ与Spring的框架整合之Spring Boot实战. 首先创建maven项目的RabbitMQ的消息生产者rabbitmq-springboot-provider项目,配置pom ...
- TypeScript 装饰器的执行原理
装饰器本质上提供了对被装饰对象 Property Descriptor 的操作,在运行时被调用. 因为对于同一对象来说,可同时运用多个装饰器,然后装饰器中又可对被装饰对象进行任意的修改甚至是替换掉实 ...