您现在的位置是:首页 > 正文

hive-NVL、Coalesce、NVL2、NULLIF函数

2024-02-29 15:25:41阅读 0

1.NVL函数

NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
例如:
SQL> select ename,NVL(comm, -1) from emp;
 
ENAME NVL(COMM,-1)
------- ----
SMITH -1
ALLEN 300
WARD 500
JONES -1
MARTIN 1400
BLAKE -1
FORD -1
MILLER -1
其中显示-1的本来的值全部都是空值的

2 NVL2函数
NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。SQL> select ename,NVL2(comm,-1,1) from emp;
 
ENAME NVL2(COMM,-1,1)
------- -----
SMITH 1
ALLEN -1
WARD -1
JONES 1
MARTIN -1
BLAKE 1
CLARK 1
SCOTT 1
上面的例子中。凡是结果是1的原来都不为空,而结果是-1的原来的值就是空。

 

3. NULLIF函数
NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
下面是一个例子。使用的是oracle中HR schema,如果HR处于锁定,请启用
这里的作用是显示出那些换过工作的人员原工作,现工作。
SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) “Old Job ID”
FROM employees e, job_history j
WHERE e.employee_id = j.employee_id
ORDER BY last_name;
 
LAST_NAME JOB_ID JOB_ID Old Job ID
----------------- ------- ------- -------
De Haan AD_VP IT_PROG AD_VP
Hartstein MK_MAN MK_REP MK_MAN
Kaufling ST_MAN ST_CLERK ST_MAN
Kochhar AD_VP AC_MGR AD_VP
Kochhar AD_VP AC_ACCOUNT AD_VP
Raphaely PU_MAN ST_CLERK PU_MAN
Taylor SA_REP SA_MAN SA_REP
Taylor SA_REP SA_REP
Whalen AD_ASST AC_ACCOUNT AD_ASST
Whalen AD_ASST AD_ASST
可以看到凡是employee。job_id和job_histroy.job_id相等的,都会在结果中输出NULL即为空,否则显示的是employee。job_id

 

4.Coalesce函数
Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)
表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
返回表达式中第一个非空表达式,如有以下语句:   SELECT COALESCE(NULL,NULL,3,4,5) FROM dual   其返回结果为:3
如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。   COALESCE(expression1,...n) 与此 CASE 函数等价:
这个函数实际上是NVL的循环使用,在此就不举例子了。

网站文章

  • 服务端测试开发必备技能:Mock测试

    服务端测试开发必备技能:Mock测试

    什么是mock测试?Mock 测试就是在测试活动中,对于某些不容易构造或者不容易获取的数据/场景,用一个Mock对象来创建以便测试的测试方法。

    2024-02-29 15:25:12
  • k8s控制器和Pod Template的关系

    k8s控制器和Pod Template的关系

    k8s控制器和Pod Template的关系

    2024-02-29 15:25:04
  • LA 5506 Eight

    LA 5506 Eight

    同样是South Central USA 1998的题,POJ和HDU上的数据比较水,用BFS不加任何优化都可以AC,时间一般是三位数左右。而用A*或IDA*则可以把时间控制在10ms左右,甚至0ms!         然而UVa Live上的这道题是多数据的,用IDA*不加优化都会超时。除此之外题目输入输出很严格,case和case之间必须有空行,在最后一组case之后不能有空行,否则会Wr

    2024-02-29 15:24:58
  • STM32 FOC电机PID学习笔记

    STM32 FOC电机PID学习笔记

    简介 在系统上存在外部干扰的情况下反馈是最好的选择否则使用前馈网络。 为扭矩、通量和速度实施的调节器实际上是比例(P Proportional )、积分(I Integral)、微分 (D Deriv...

    2024-02-29 15:24:31
  • 计算机毕业设计之php的网上汽车销售系统

    计算机毕业设计之php的网上汽车销售系统

    基于php的汽车销售网站将不同的车展示在自己的网站上,用户通过该网站,不仅可以了解各种车款的详情,还能在线预订任何一款爱车,然后到相关的汽车销售实体店现场看车、验车、试车、讨价还价、如果最后满意并确定...

    2024-02-29 15:24:25
  • Android - Intent与IntentFilter

    Android - Intent与IntentFilter

    Intent类的注释: 一个intent是要被执行的操作的一种抽象的描述,结合Context.Java类中定义的几个方法 —— [java] view plain copy "background-color: rgb(255, 255, 255);">"font-family:Microsoft YaHei;font

    2024-02-29 15:24:17
  • 高中作文计算机与算盘,电脑与算盘作文600字

    在一个宽敞明亮的书房里,一排排书整齐地排列在书柜里,一台电脑正霸气地坐在主人的办公桌上。随着“嗒嗒嗒”键盘敲击的声音,一组组数据被输入进去快速地运行着,很快完成了计算任务。台灯、笔盒、书……大家都用崇...

    2024-02-29 15:24:11
  • ES6整理笔记

    一、 数组的解构赋值 1.1 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 。 以前为变量赋值,只能直接指定值。例如 let a = 1; let b = 2; let...

    2024-02-29 15:23:41
  • Spring Cloud学习 | 第一章 | 背景介绍

    (1):很久没有更新过自己的博客了,因为这段时间也在学习Spring Cloud,但是现目前国内资料还不是很多,而且搜出来的资料都千篇一律,学习起来非常恼火! 所以很多东西都智能从官方文档上慢慢的去学习,如果敲好您也在学习,或许可以让您节省一些时间,少走一些弯路! (2):学习一个新的知识点之前,我们还是需要花一部分的时间去了解该知识点的背景,组成,作用。就像我们写小说一样总有三要素,

    2024-02-29 15:23:35
  • 【算法笔记】Day04 |  2.5数组

    【算法笔记】Day04 | 2.5数组

    本节目录2.5.1 一维数组A.定义B.初始化C.递推2.5.2 冒泡排序A.算法内理解B.算法实现b1.交换2个数b2.冒泡排序实现2.5.3 二维数组A.定义B.初始化C.运算D.大型数组声明位置...

    2024-02-29 15:23:30