Oracle中的NULL、’’(空字符串)以及’_’(空格)
本文首发于 http://youngzy.com/
在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑?
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;
结果:
| NVL(COL_A,’A’) | |
|---|---|
| 1 | |
| 2 | a |
| 3 | a |
原来,在Oracle中,null和’’(空字符串)是一个意思。
分析函数与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;
结果如下:
| COL_A | COL_B |
|---|---|
| _ | 1 |
| 2 | |
| 3 | |
| 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
排序时,NULL作为无穷大处理。
select * from tbl_a order by col_b desc ;
结果如下:
| COL_A | COL_B |
|---|---|
| a | |
| 3 | |
| 2 | |
| _ | 1 |
参考:http://blog.csdn.net/weiwenhp/article/details/7035327
Oracle中的NULL、’’(空字符串)以及’_’(空格)的更多相关文章
- 【转】oracle中的NULL、''(空字符串)以及'_'(空格)
在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.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空值判断 空值不等同于 ...
随机推荐
- Linux命令第一篇
作业一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为“master” natasha:x:1004:555:master:/home/natasha:/bin/ba ...
- JS_高程5.引用类型(1)Object类型
引用类型 在ECMASCript中,引用类型是一种数据结构,将数据和功能组织在一起,引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法.(注意:尽管ECMAScript从技术上 ...
- django之Ajax初识
Ajax准么说是用于Javascript与服务器端进行交互的,我们之前呢没有了解ajax也同样可以完成与服务器的交互,那么ajax的优势在哪里?首先ajax是异步交互的也就是说我们基本不会遇到卡顿现象 ...
- 11、jQuery其余操作
上篇主要介绍了jQuery,和一些基本用法,这篇主要讲解动画.常用事件.还有一些jQuery的补充内容. 本篇导航: 动画 常用事件 插件 jQuery API 中文文档 一.动画 1.基本 show ...
- 09、高级编程之基于排序机制的wordcount程序
package sparkcore.java; import java.util.Arrays; import java.util.Iterator; import org.apache.spark. ...
- SQLite在.NET中自适应32位/64位系统
如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不同了. SQLite的.NET开发包来自是System.D ...
- C#退出程序,退出任务管理器
//窗体关闭之前 this.FormClosing += (s, r) => { System.Environment.Exit(0); }; //窗体关闭 this.Closed += (s, ...
- PHP异步扩展Swoole笔记(2)
dispatch_mode, 数据包分发策略 可以选择7种类型,默认为21,轮循模式,收到会轮循分配给每一个Worker进程2,固定模式,根据连接的文件描述符分配Worker.这样可以保证同一个连接发 ...
- IDEA使用笔记(九)——设置文件注释
方式一:后写文件描述信息 1:设置——如下图所示 2:验证——创建个类试试 3:验证——结果如下 4:其他,所有注释模版中包含 #parse("File Header.java") ...
- 浅谈 CSS 预处理器: 为什么要使用预处理器?
CSS 自诞生以来,基本语法和核心机制一直没有本质上的变化,它的发展几乎全是表现力层面上的提升.最开始 CSS 在网页中的作用只是辅助性的装饰,轻便易学是最大的需求:然而如今网站的复杂度已经不可同日而 ...