【转】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空值判断 空值不等同于 ...
随机推荐
- LeetCode--回文数(简单)
题目描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解 ...
- pycharm连接远程python的开发环境
一.准备工作 1.远程主机配置python的开发环境(pyenv) 2.本地windowsp安装pycharm 二.配置pycharm连接 配置运行环境:
- 【CentOS 7】CentOS 7各个版本镜像下载地址(转)
参考链接:https://www.centos.org/download/mirrors/ https://www.cnblogs.com/defineconst/p/11176593.html
- Java之Map接口(双列集合)
Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...
- Vue Cli3 中别名的配置问题
Vue Cli3 中别名的配置问题 vue-cli3中是没有config.build等目录的,这是因为vue-cli3中将这些配置隐藏起来了,如果想要修改,可以在vue.config.js文件中进行修 ...
- SQL,case ziduan when ziduan_value then 'result'
case a.sex when 0 then '女' when 1 then '男' else '其他' end as sex 当a表的性别字段的value为0时将查询的value转换成 '女',当字 ...
- .Net Core 3.0开源可视化设计CMS内容管理系统建站系统
简介 ZKEACMS,又名纸壳CMS,是可视化编辑设计的内容管理系统.基于.Net Core开发可跨平台运行,并拥有卓越的性能. 纸壳CMS基于插件式设计,功能丰富,易于扩展,可快速创建网站. 布局设 ...
- Linux:FTP服务器的搭建
FTP服务器的简介 系统用户 即系统本机的用户.Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件 系统进行工作.但通常不希望他们通过FTP方式远程访问系统. 虚拟用户 只能采用FT ...
- Educational Codeforces Round 76 (Rated for Div. 2)
传送门 A. Two Rival Students 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/13 22:37:26 */ #incl ...
- 201871010113-刘兴瑞《面向对象程序设计(java)》第十三周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...