Oracle数据库:oracle函数嵌套,nvl函数,nvl2函数,nullif函数,coalesce合并函数

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
oracle系列文章:
【1】Oracle数据库:啥是oracle数据库?你为啥要学oracle?
【2】Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样
【3】Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法
【4】Oracle数据库:创建表空间,创建新用户,给用户分配对象、角色和系统权限,登录新用户建表
【5】Oracle数据库:链接配置,包括sqlnet.ora里面的transnames.ora配置数据库标识符SID,listener暂时简单了解
【6】Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库
【7】Oracle数据库:oracle字符类型、数字类型、创建表表名的命名规则
【8】Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写
【9】Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系
【10】Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作
【11】Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句
【12】Oracle数据库:逻辑运算and,or,not和各种运算的优先级控制
【13】Oracle数据库:排序order by语句,select from where order by的执行先后顺序,各种样例
【14】Oracle数据库:oracle函数,单行函数,多行函数,upper,lower,initcap,字符串函数
【15】Oracle数据库:数字函数,日期函数,round,trunc,mod,months_between,add_months,next_day,last_day,sysdate
【16】Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数


文章目录

  • Oracle数据库:oracle函数嵌套,nvl函数,nvl2函数,nullif函数,coalesce合并函数
    • @[TOC](文章目录)
  • oracle函数嵌套
  • 通用函数:处理null的
    • NVL函数![在这里插入图片描述](https://img-blog.csdnimg.cn/6c10b82bfd0f45aa8221a76f1d4970ed.png)
    • NVL2函数
    • NULLIF函数
    • COALESCE函数
  • 总结

oracle函数嵌套


函数从里面到外面执行
类型要返回匹配的类型哦

和java等等等等一样

SQL> select to_char(next_day(add_months(hire_date, 6), 6), 'day,mm"月",dd"日",yyyy"年"') from employees order by hire_date;TO_CHAR(NEXT_DAY(ADD_MONTHS(HIRE_DATE,6),6),'DAY,MM"月",DD"日",YYYY"年"')
----------------------------------------------------------------------
星期五,07月,20日,2001年
星期五,12月,13日,2002年
星期五,12月,13日,2002年
星期五,12月,13日,2002年

先执行
add_months(hire_date, 6)
返回一个加6个月的日期值
然后把这个日期值给算一个下一个星期5
1–7表示星期日–星期六
最后再把这个日期转化为字符串,格式还是我们说过的格式,上一篇文章说的很清楚了

通用函数:处理null的

NVL函数


有很多员工是没有佣金的
那佣金为0呗
所以佣金需要把null转为数字0

SQL> select last_name, salary, 12*salary + commission_pct from employees;LAST_NAME                     SALARY 12*SALARY+COMMISSION_PCT
------------------------- ---------- ------------------------
King                        24000.00
Kochhar                     17000.00
De Haan                     17000.00
Hunold                       9000.00

你看看算不了
咱可以
将null转为0

SQL> select last_name, salary, commission_pct, 12*salary, 12*salary*nvl(commission_pct, 0) from employees;LAST_NAME                     SALARY COMMISSION_PCT  12*SALARY 12*SALARY*NVL(COMMISSION_PCT,0)
------------------------- ---------- -------------- ---------- -------------------------------
King                        24000.00                    288000                               0
Kochhar                     17000.00                    204000                               0
De Haan                     17000.00                    204000                               0
Hunold                       9000.00                    108000                               0
Ernst                        6000.00                     72000                               0
Austin                       4800.00                     57600                               0
Pataballa                    4800.00                     57600                               0
Lorentz                      4200.00                     50400                               0
Greenberg                   12008.00                    144096                               0
Faviet                       9000.00                    108000                               0
Chen                         8200.00                     98400                               0
Sciarra                      7700.00                     92400                               0
Urman                        7800.00                     93600                               0
Popp                         6900.00                     82800                               0
Raphaely                    11000.00                    132000                               0
Khoo                         3100.00                     37200                               0
Baida                        2900.00                     34800                               0
Tobias                       2800.00                     33600                               0
Himuro                       2600.00                     31200                               0
Colmenares                   2500.00                     30000                               0LAST_NAME                     SALARY COMMISSION_PCT  12*SALARY 12*SALARY*NVL(COMMISSION_PCT,0)
------------------------- ---------- -------------- ---------- -------------------------------
Weiss                        8000.00                     96000                               0
Fripp                        8200.00                     98400                               0
Kaufling                     7900.00                     94800                               0
Vollman                      6500.00                     78000                               0
Mourgos                      5800.00                     69600                               0
Nayer                        3200.00                     38400                               0
Mikkilineni                  2700.00                     32400                               0
Landry                       2400.00                     28800                               0
Markle                       2200.00                     26400                               0
Bissot                       3300.00                     39600                               0
Atkinson                     2800.00                     33600                               0
Marlow                       2500.00                     30000                               0
Olson                        2100.00                     25200                               0
Mallin                       3300.00                     39600                               0
Rogers                       2900.00                     34800                               0
Gee                          2400.00                     28800                               0
Philtanker                   2200.00                     26400                               0
Ladwig                       3600.00                     43200                               0
Stiles                       3200.00                     38400                               0
Seo                          2700.00                     32400                               0
Patel                        2500.00                     30000                               0LAST_NAME                     SALARY COMMISSION_PCT  12*SALARY 12*SALARY*NVL(COMMISSION_PCT,0)
------------------------- ---------- -------------- ---------- -------------------------------
Rajs                         3500.00                     42000                               0
Davies                       3100.00                     37200                               0
Matos                        2600.00                     31200                               0
Vargas                       2500.00                     30000                               0
Russell                     14000.00           0.40     168000                           67200
Partners                    13500.00           0.30     162000                           48600

没有佣金的把佣金当做0,然后×年薪就这么点了

SQL> select last_name, salary, commission_pct, 12*salary + 12*salary*nvl(commission_pct, 0) as "AN_SAL" from employees;LAST_NAME                     SALARY COMMISSION_PCT     AN_SAL
------------------------- ---------- -------------- ----------
King                        24000.00                    288000
Kochhar                     17000.00                    204000
De Haan                     17000.00                    204000
Hunold                       9000.00                    108000
Ernst                        6000.00                     72000

好说,上面我就实现过了

NVL2函数


return expr1?expr2:expr3
exper1为1返回expr2
否则返回expr3

SQL> select last_name, salary, commission_pct, nvl2(commission_pct, 12*salary*(1+commission_pct), 12*salary) as "AN_SAL" from employees;LAST_NAME                     SALARY COMMISSION_PCT     AN_SAL
------------------------- ---------- -------------- ----------
King                        24000.00                    288000
Kochhar                     17000.00                    204000
De Haan                     17000.00                    204000
Hunold                       9000.00                    108000
Ernst                        6000.00                     72000
Austin                       4800.00                     57600

反正就三目呗
好说
有佣金,我们就带上佣金
没有佣金,直接返回原始的薪水

NULLIF函数


互相比较,都是null
返回null

否则返回第一个expr1,它还不能空

SQL> select first_name,length(first_name) as e1,last_name,length(last_name) as e2, nullif(length(first_name), length(last_name)) as result from employees;FIRST_NAME                   E1 LAST_NAME                         E2     RESULT
-------------------- ---------- ------------------------- ---------- ----------
Ellen                         5 Abel                               4          5
Sundar                        6 Ande                               4          6
Mozhe                         5 Atkinson                           8          5
David                         5 Austin                             6          5
Hermann                       7 Baer                               4          7
Shelli                        6 Baida                              5          6
Amit                          4 Banda                              5          4
Elizabeth                     9 Bates                              5          9
Sarah                         5 Bell                               4          5
David                         5 Bernstein                          9          5
Laura                         5 Bissot                             6          5
Harrison                      8 Bloom                              5          8
Alexis                        6 Bull                               4          6
Anthony                       7 Cabrio                             6          7
Gerald                        6 Cambrault                          9          6
Nanette                       7 Cambrault                          9          7
John                          4 Chen                               4
Kelly                         5 Chung                              5
Karen                         5 Colmenares                        10          5
Curtis                        6 Davies                             6

你瞅瞅,姓名,如果长度相等,返回就是null
否则返回firstname的长度

COALESCE函数


依次寻找,扩展了nvl2函数

返回第一个非空表达式的值

SQL> select last_name, coalesce(commission_pct, salary, 10) from employees;LAST_NAME                 COALESCE(COMMISSION_PCT,SALARY,10)
------------------------- ----------------------------------
King                                                   24000
Kochhar                                                17000
De Haan                                                17000
Hunold                                                  9000
Ernst                                                   6000
Austin                                                  4800
Pataballa                                               4800
Lorentz                                                 4200
Greenberg                                              12008
Faviet                                                  9000
Chen                                                    8200
Sciarra                                                 7700
Urman                                                   7800
Popp                                                    6900
Raphaely                                               11000
Khoo                                                    3100
Baida                                                   2900
Tobias                                                  2800
Himuro                                                  2600
Colmenares                                              2500LAST_NAME                 COALESCE(COMMISSION_PCT,SALARY,10)
------------------------- ----------------------------------
Weiss                                                   8000
Fripp                                                   8200
Kaufling                                                7900
Vollman                                                 6500
Mourgos                                                 5800
Nayer                                                   3200
Mikkilineni                                             2700
Landry                                                  2400
Markle                                                  2200
Bissot                                                  3300
Atkinson                                                2800
Marlow                                                  2500
Olson                                                   2100
Mallin                                                  3300
Rogers                                                  2900
Gee                                                     2400
Philtanker                                              2200
Ladwig                                                  3600
Stiles                                                  3200
Seo                                                     2700
Patel                                                   2500LAST_NAME                 COALESCE(COMMISSION_PCT,SALARY,10)
------------------------- ----------------------------------
Rajs                                                    3500
Davies                                                  3100
Matos                                                   2600
Vargas                                                  2500
Russell                                                  0.4
Partners                                                 0.3

不会出现10
因为都有月薪

否咋谁去给你用爱发电呀


总结

提示:重要经验:

1)
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

Oracle数据库:oracle函数嵌套,nvl函数,nvl2函数,nullif函数,coalesce合并函数相关推荐

  1. oracle+nvlif函数,Oracle中的NVL()、NVL2()、NULLIF()、Coalesce()函数

    大家先来看看下面这道简单的题目: 1.  TEST表包含两个列,TESTCOL定义为数据类型NUMBER(10),TESTCOL_2定义为数据类型VARCHAR2(10).在Oracle中发出下列语句 ...

  2. NVL、NVL2、NULLIF、COALESCE的区别是什么?

    [DB笔试面试454] NVL.NVL2.NULLIF.COALESCE的区别是什么? NVL.NVL2.NULLIF与COALESCE都是处理当前字段值为空的时候的转换函数.以下将分别对这几个函数进 ...

  3. Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解

    NVL(EXPR1,EXPR2) NVL2(EXPR1,EXPR2,EXPR3) NULLIF(EXPR1,EXPR2) COALESCE(EXPR1,,..,EXPRn) decode ------ ...

  4. oracle nvl nullif,OracleDBNVL、NVL2、NULLIF、COALESCE函数

    Oracle DB NVL.NVL2.NULLIF.COALESCE函数 常规函数 下列函数可用于任何数据类型,且适合使用空值的场合: • NVL (expr1, expr2) • NVL2 (exp ...

  5. oracle数据库插入多表,在Oracle数据库中插入嵌套表

    我是PL/SQL数据库的新学习者,这是一种给apex.oracle.com上的数据库应用指定序列的练习.然后我创建了表格,但是当填充与插入的代码如下所示,应用赋予错误,表你不介意,我需要你的帮助在Or ...

  6. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  7. oracle判断空值的函数nvl2,Oracle nvl、nvl2、nullif、decode、case函数详解

    1.NVL函数 nvl(expr1,expr2),如果expr1为空,则返回expr2: 2.NVL2函数 nvl2(expr1,expr2,expr3),如果expr1为空,则返回expr3,否则返 ...

  8. oracle 空值处理nvl2,Oracle学习笔记:nvl、nvl2、nullif、decode函数

    一.nvl函数 功能:从两个表达式返回一个非 NULL 值. 语法: select nvl(expression1, expression2) -- 如果 expression1 计算结果为 null ...

  9. 不入oracle数据库,Oracle数据库之操作符及函数

    一.操作符: 1.分类: 算术.比较.逻辑.集合.连接: 2.算术操作符: 执行数值计算: --工资加1000 select empno,ename,job,sal+1000 from emp; 3. ...

最新文章

  1. Kerberos 原理简述
  2. 反转字符串中的单词 III leetcode
  3. AMD GPU+VS2010的OpenCL配置
  4. Atlassian JIRA 插件开发之三 创建
  5. 13.程序员的自我修养---运行库实现
  6. 国资入局,苏宁“零售服务商”升级战略获得最强助力
  7. 转:使用java生成数字验证码
  8. 新车磨合应该从正确启动发动机开始
  9. android 自定义接口,Android中定义接口的用法
  10. 如何正确使用数据可视化图表?
  11. YOLOv3使用笔记
  12. 30个不可不知的容器技术工具和资源
  13. AD中更改原理图图纸大小
  14. 安卓接班人?Fuchsia能补上安卓硬伤吗
  15. css-边框(border)
  16. TREC Real-Time Summarization Track
  17. php制作明信片,photoshop简单制作一张明信片
  18. 一二线城市知名IT互联网公司名单
  19. 三句话,让Ai帮你画18万张图
  20. windows中通过xshell上传文件到Linux中

热门文章

  1. 微博营销实战4——网络舆论的监控与应对
  2. Android与ios的优劣深度解析!
  3. detached HEAD的原因及解决
  4. 电脑录屏怎么录制影视片段视频
  5. CSS position:fixed定位时 “高度坍塌” 问题的解决
  6. 大陆“水货”笔记本 详细资料
  7. Euklid.v2004
  8. 计算机专业中职好就业不,就业前景好的中职专业有哪些
  9. 种子数是123,如何用蒙特卡罗方法计算圆周率
  10. dcl并列控件 lisp_CAD autolisp jjj-dcl-make函数