1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Oracle数据库:oracle函数嵌套 nvl函数 nvl2函数 nullif函数 coalesce合并函数

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

时间:2022-07-04 16:25:00

相关推荐

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

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

找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开

测开的话,你就得学数据库,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-/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.00288000 0Kochhar 17000.00204000 0De Haan 17000.00204000 0Hunold 9000.00108000 0Ernst 6000.00 72000 0Austin 4800.00 57600 0Pataballa4800.00 57600 0Lorentz 4200.00 50400 0Greenberg 1.00144096 0Faviet 9000.00108000 0Chen8200.00 98400 0Sciarra 7700.00 92400 0Urman 7800.00 93600 0Popp6900.00 82800 0Raphaely11000.00132000 0Khoo3100.00 37200 0Baida 2900.00 34800 0Tobias 2800.00 33600 0Himuro 2600.00 31200 0Colmenares 2500.00 30000 0LAST_NAME SALARY COMMISSION_PCT 12*SALARY 12*SALARY*NVL(COMMISSION_PCT,0)------------------------- ---------- -------------- ---------- -------------------------------Weiss 8000.00 96000 0Fripp 8200.00 98400 0Kaufling 7900.00 94800 0Vollman 6500.00 78000 0Mourgos 5800.00 69600 0Nayer 3200.00 38400 0Mikkilineni 2700.00 32400 0Landry 2400.00 28800 0Markle 2200.00 26400 0Bissot 3300.00 39600 0Atkinson 2800.00 33600 0Marlow 2500.00 30000 0Olson 2100.00 25200 0Mallin 3300.00 39600 0Rogers 2900.00 34800 0Gee2400.00 28800 0Philtanker 2200.00 26400 0Ladwig 3600.00 43200 0Stiles 3200.00 38400 0Seo2700.00 32400 0Patel 2500.00 30000 0LAST_NAME SALARY COMMISSION_PCT 12*SALARY 12*SALARY*NVL(COMMISSION_PCT,0)------------------------- ---------- -------------- ---------- -------------------------------Rajs3500.00 42000 0Davies 3100.00 37200 0Matos 2600.00 31200 0Vargas 2500.00 30000 0Russell 14000.00 0.40168000 67200Partners13500.00 0.30162000 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_PCTAN_SAL------------------------- ---------- -------------- ----------King 24000.00288000Kochhar 17000.00204000De Haan 17000.00204000Hunold 9000.00108000Ernst 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_PCTAN_SAL------------------------- ---------- -------------- ----------King 24000.00288000Kochhar 17000.00204000De Haan 17000.00204000Hunold 9000.00108000Ernst 6000.00 72000Austin 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_NAMEE2RESULT-------------------- ---------- ------------------------- ---------- ----------Ellen5 Abel 45Sundar 6 Ande 46Mozhe5 Atkinson 85David5 Austin 65Hermann 7 Baer 47Shelli 6 Baida56Amit4 Banda54Elizabeth 9 Bates59Sarah5 Bell 45David5 Bernstein95Laura5 Bissot 65Harrison 8 Bloom58Alexis 6 Bull 46Anthony 7 Cabrio 67Gerald 6 Cambrault96Nanette 7 Cambrault97John4 Chen 4 Kelly5 Chung5 Karen5 Colmenares 105Curtis 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 24000Kochhar 17000De Haan 17000Hunold9000Ernst 6000Austin4800Pataballa 4800Lorentz 4200Greenberg1Faviet9000Chen 8200Sciarra 7700Urman 7800Popp 6900Raphaely 11000Khoo 3100Baida 2900Tobias2800Himuro2600Colmenares2500LAST_NAME COALESCE(COMMISSION_PCT,SALARY,10)------------------------- ----------------------------------Weiss 8000Fripp 8200Kaufling 7900Vollman 6500Mourgos 5800Nayer 3200Mikkilineni2700Landry2400Markle2200Bissot3300Atkinson 2800Marlow2500Olson 2100Mallin3300Rogers2900Gee 2400Philtanker2200Ladwig3600Stiles3200Seo 2700Patel 2500LAST_NAME COALESCE(COMMISSION_PCT,SALARY,10)------------------------- ----------------------------------Rajs 3500Davies3100Matos 2600Vargas2500Russell0.4Partners 0.3

不会出现10

因为都有月薪

否咋谁去给你用爱发电呀

总结

提示:重要经验:

1)

2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。

3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。