oracle 中关于null的操作
空值
空值一般用NULL表示
一般表示未知的、不确定的值,也不是空格
一般运算符与其进行运算时,都会为空
空不与任何值相等
表示某个列为空用:IS NULL 不能使用COMM=NULL这种形式
某个列不为空:IS NOT NULL 不能使用COMM != NULL 这种形式
空值在作升序排列时,空值会放到最后。
相反作降序排列时,空值会放在最前。
空值作逻辑运算时:
AND运算:
F AND F =F F AND T =F F AND NULL =F
T AND F =F T AND T =T T AND NULL IS NULL
NULL AND F =F NULL AND T IS NULL NULL AND NULL IS NULL
就是说AND的优先级是:F ->NULL ->T
OR运算:
T OR T =T T OR F =T T OR NULL =T
F OR T =T F OR F =F F OR NULL IS NULL
NULL OR T =T NULL OR F IS NULL NULL OR NULL IS NULL
OR运算优先级:T ->NULL ->F
NOT运算:
NOT T =F
NOT F =T
NOT NULL IS NULL
与空值相关的函数:
NVL 函数
格式:NVL(表达式1,表达式2)
作用:测试表达式的值,如果表达式1为空,则返回表达式2的值;不为空,返回表达式1的值。
NVL2 函数
格式:NVL2(表达式1,表达式2,表达式3)
作用:测试表达式的值,表达式1不为空,返回表达式2的值,如果为空,则返回表达式3的值。
NULLIF 相等为空
格式:NULLIF (表达式1,表达式2)
作用:比较表达式1和表达式2的值,如果两个相等则返回为空,否则返回表达式1的值。
COALESCE 找非空
格式:COALESCE (表达式1,表达式2,表达式3,...,表达式n)
作用:返回第一个不为空的值,如果所有的都为空,则返回NULL。
演示:
Create Table Test6(
id varchar2(30),
name varchar2(30),
age number(2),
sex varchar2(2)
)
建表语句

结果集
1、nvl函数
select id,name,nvl(TO_CHAR(age),'未录入'),nvl(TO_CHAR(sex),'未录入') from Test6

2、nvl2函数
格式:NVL2(表达式1,表达式2,表达式3)
作用:测试表达式的值,表达式1不为空,返回表达式2的值,如果表达式1不为空,则返回表达式3的值。
select id,name,NVL2(TO_CHAR(age),2*(age+sex),age) AS othesr from Test6;

运算方式和?:运算规则一致当TO_ChAR(age)不为空(true)时,执行2*(age+sex),否则就执行后面的表达式age
注意:NULL和任何数进行算数操作,其返回值都是NULL。
oracle 中关于null的操作的更多相关文章
- oracle 中proc和oci操作对缓存不同处理
oracle 中proc和oci操作对缓存不同处理
- Oracle中的NULL、’’(空字符串)以及’_’(空格)
本文首发于 http://youngzy.com/ 在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? null和’’(空字符串)是一个意思 注: 为了便于 ...
- 【转】oracle中的NULL、''(空字符串)以及'_'(空格)
在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.NULL和''(空字符串)是一个意思 注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格. ...
- oracle中的层级递归查询操作
oracle中的层级操作非常方便,在使用之后爱不释手,以前要实现该种数据查询操作,需要非常复杂的实现过程.在oracle中通过connect by可以实现前面的目的,通常情况下层级查询基本都能实现递归 ...
- oracle 中的null与''
1.先看看Null与''在oracle中的表现 C:\Users\zen>sqlplus hr/hr SQL Production :: Copyright (c) , , Oracle. Al ...
- Oracle中的null与空字符串''的区别
含义解释:问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零.ORACLE允许任何一种数据类型的字段为空,除了以下 ...
- Oracle中的null
测试数据:公司部分员工基本信息
- 对oracle中date/timestamp的操作
设置oracle中date的会话格式为 'yyyy-mm-dd hh24:mi:ss' alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss ...
- Oracle中日期时间的操作比较和加减-入门基础(转)
Oracle关于时间/日期的操作 1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval '7' MINUTE from dual ...
随机推荐
- .NET基础 (06)面向对象的实现
面向对象的实现1 C#中类可以有多个父类.可以实现多个接口吗2 简述C#中重写.重载和隐藏的概念3 为什么在构造方法中调用虚方法会导致问题4 在C#中如何声明一个类不能被继承 面向对象的实现 1 C# ...
- Karma和Jasmine 自动化单元测试环境搭建
最近初学AngularJS ,看到的一些教程中经常有人推荐使用Karma+Jasmine来进行单元测试.自己之前也对Jasmine有些了解,jasmine也是一个不错的测试框架. 1. karma介绍 ...
- T4模板调用反射
<#@ template debug="false" hostspecific="true" language="C#" #> ...
- memcached整理の内存管理及删除机制
内存的碎片化 如果用C语言直接malloc,free来向操作系统申请和释放内存时,在不断申请和释放的过程中,形成了一些很小的内存片段,无法再利用.这种空闲但无法利用内存的现象称为内存的碎片化. sla ...
- Reporting Service服务SharePoint集成模式安装配置(8、配置用于SharePoint 2010的Reporting service模式)
从SQL Server 2012 起, SQL Server Reporting Service可以完全集成进SharePoint的场,直接作为SharePoint 的组件部分来运行,没有独立的Win ...
- Transaction And Lock--解决死锁/锁的几种有效方式
修改资源访问顺序,使多个事务对资源的访问方式一致优化查询SELECT,使得S锁能尽早释放均可能将更新和删除语句放到事务末端(使得X锁占用时间最小)避免事务执行期间暂停或等待外部输入将较大事务拆分成多个 ...
- C#加密解密总览
C#SHA加密 C#MD5加密 C#RSA加密解密 C#DES加密和解密 C#AES加密和解密
- codeforces|CF13C Sequence
大概的题意就是每次可以对一个数加一或者减一,然后用最小的代价使得原序列变成不下降的序列. 因为是最小的代价,所以到最后的序列中的每个数字肯定在原先的序列中出现过.(大家可以想一下到底是为什么,或者简单 ...
- NOIP前刷题记录
因为本蒻实在太蒻了...对于即将到来的NOIP2018ssfd,所以下决心要把自己近期做过的题目(衡量标准为洛谷蓝题难度或以上)整理一下,归归类,简单地写一下思路,就当作自己复习了吧qwq 本随笔持续 ...
- 多张表进行关联查询---->删除某个数据的时候出现还有子记录的提示
多张表进行关联查询的时候,当某张表里面的一个字段在另外一张表有定义,就相当于一张表是另外一张表的子表:比如现在开发所遇到的一个问题: 这个是在删除sys_user表的里面的数据的时候出现的问题,因为s ...