Oracle入门(十四D)之常规函数

一、NULL处理

(1)函数的计算过程

到目前为止,您已经学会了在简单语句中应用单行函数。不过,函数可以嵌套任意层。所以,了解嵌套函数的计算过程非常重要。下例就是一个嵌套函数。其计算过程是从最里层开始计算,直到最外层。
SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(聘用日期, 6),'FRIDAY'), 'fmDay, Month DDth, YYYY') AS "下一天计算结果"
FROM 雇员
WHERE 雇员标识=100;
结果为:

Friday, December 18th, 1987


SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(聘用日期, 6),'FRIDAY'), 'fmDay, Month DDth, YYYY') AS "下一天计算结果"FROM 雇员  WHERE 雇员标识=100;

• 步骤 1:在聘用日期基础上加上六个月。

• 步骤 2:确定聘用日期之后的第一个星期五。

• 步骤 3:转换默认的日期格式,采用如下格式显示这个星期五:Friday, December 18th, 1987,在输出结果中这些内容将显示在列名“下一天计算结果”下。

(2)涉及 Null 值的函数

在课程开始阶段,我们已介绍了“Null”这个术语。您可能还记得,Null 就是不可用、未指定、未知或不适用的值。从根本上讲,我们无法测试该值是否与其它值一样,因为我们不知道它是什么值。它不等于任何值,也不等于零!Null 不代表任何实际值,但这并不意味着它不重要。请想象一下这样的问题:X = Y 正确吗?要回答此问题,必须知道 X 和 Y 的值。Oracle 有四个涉及使用null 值的常规函数。这四个函数为:
- NVL
- NVL2
- NULLIF

- COALESCE


二、NVL 函数

    NVL 函数可以将 null 值转换为固定数据类型(日期、字符或数字)的已知值。Null 值列和新值的数据类型必须相同。

该 NVL 函数为:

NVL (可能包含 null 的值或列, 用以替换 null的值)

以下查询使用字符数据类型的 NVL 函数:
select nvl(注释, '没有注释')
from d_播放列表曲目;

Null 值列和新值的数据类型必须相同,如下例
所示:

nvl(批准的费用金额,0)
nvl(聘用日期,'01-JAN-97')
nvl(专业,'暂无')

    可以在进行计算之前,使用 NVL 函数将包含null 的列值转换为数字。对 null 执行算术计算时,结果为 null。NVL 函数可以在进行算术计算之前,将 null 值转换为数字,以避免结果为 null。

    在本示例中,D_合作伙伴表中的“批准的费用金额”列包含 null 值。NVL 函数用于在进行算术计算之前将 null 更改为零。

select 名字, 姓氏, nvl(批准的费用金额, 0) * 1.05 as 费用
from d_合作伙伴;


三、NVL2 函数

    NVL2 函数对包含三个值的表达式求值。如果第一个值不为 null,则 NVL2 函数返回第二个表达式。如果第一个值为 null,则返回第三个表达式。表达式 1 中的值可以采用任意数据类型。表达式 2 和表达式 3 可以采用 LONG 之外的任意数据类型。返回值的数据类型始终与表达式 2 的数据类型相同,除非表达式 2 是字符数据(在这种情况下,返回值为 VARCHAR2 数据类型)。

NVL2 函数是:

    NVL2 (可能包含 null 的表达式 1 值, 表达式 1 不是null 时要返回的表达式 2 值, 表达式 1 是 null 时用以替换 null 的表达式 3 值)

    记忆 NVL2 函数的一个小窍门是:“如果表达式 1 具有值,则返回替代表达式 2;如果表达式 1 是 null,则返回替代表达式 3。”

    在下面所示的 NVL2 函数中,表达式 1 使用数字数据,表达式 2和 3 使用字符数据。
select 姓氏, 薪金, nvl2(佣金百分比, 薪金 + (薪金 * 佣金百分比), 薪金) as 收入
from 雇员;


四、NULLIF 函数

NULLIF 函数对两个函数进行比较。如果它们相等,则函数返回null。如果不相等,则函数返回第一个表达式。
NULLIF 函数为:

nullif(表达式 1, 表达式 2)

select 名字, length(名字) "名字长度",姓氏, length(姓氏) "姓氏长度", nullif(length(名字), length(姓氏)) as "比较结果"
from d_合作伙伴;



五、COALESCE 函数

    COALESCE 函数是 NVL 函数的扩展,但是COALESCE 函数可以接受多个值。单词“coalesce”的字面意义是“联合”,这就是该函数所要执行的操作。
    如果第一个函数是 null,则函数会继续执行下一行,直到找到一个非 null 表达式。当然,如果第一个表达式具有值,则函数将返回第一个表达式并就此结束。

COALESCE 函数为:
COALESCE (表达式 1,表达式 2, ...表达式 n)

分析右侧所示的从雇员表进行检索的 SELECT 语句。

哪些雇员未获得佣金?您是如何判断出的?是否有些雇员既未获得佣金也未获得薪金?



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

用C语言编写自定义函数prime(int x),判断x是否为素数?int prime(int x){int i,kk(int)sqrt( (double)x )for(i2i&ltki )if(x%i0)break// 如果完成所有循环,那么x为素数if(i&gtk)retrun 1elsereturn 0}C语言,编…

构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识

正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况,但是随着站点应用的发展,特别是当访问量稍微大一点的时候,就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以&#xff0…

3.NIO选择器(基于NIO的服务器与客户端通讯)

【README】 本文总结自B站《尚硅谷netty》,很不错; 【1】选择器Selector(多路复用器) 【1.1】基本介绍 1)Java 的 NIO,用非阻塞的 IO 方式。可以用一个线程,处理多个客户端连接,就…

perplexity 衡量指标_求通俗解释NLP里的perplexity是什么?

高赞回答讲得已经非常通俗易懂,不过由于自然语言处理的发展,出现了许多不同类型的模型,对困惑度这个指标的计算方法颇有不同(包括前面的高赞回答也只是展开了一个子集),常常让人摸不着头脑。所以这个回答旨在尽量全面地梳理不同语…

C#在Linux上的开发指南

本人才疏学浅,在此记录自己用C#在Linux上开发的一点经验,写下这篇指南。(给想要在Linux上开发C#程序的朋友提供建议) 目前在Linux上跑的网站:http://douxiubar.com | http://douxiubar.com/AdminLogin/Index&#xff0…

Oracle入门(十四E)之条件表达式case和deocde函数

一、表达式(1)条件表达式 共有两种条件表达式,即 CASE 表达式和DECODE 表达式。就 CASE 比较两个表达式而言,该表达式在逻辑上等效于之前学习的NULLIF 函数。如果两个表达式相等,则返回null,如果不相等&…

4.基于NIO的群聊系统

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.文末有错误及解决方法; 【1】群聊需求 1)编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非 阻塞) 2)实…

构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型

在IIS 中,Http监听者(http.sys)和请求处理者由两个系统服务在控制着。一个是WWW 服务,另外一个就是Windows Process Activation。 对于WWW服务,它主要是监控IIS的配置文件,将新的配置信息用到HTTP.sys和WAS上。同时它也维持一些性…

Oracle入门(十四F)之PL/SQL定义变量

一、变量介绍 (1)变量的使用可以使用变量: 临时存储数据存储值的操作可重用性(2)PL/SQL中的变量处理变量是: 在声明部分中声明和初始化在可执行部分中使用和分配新值变量可以是:作为…

小米手环nfc门卡摸拟成功后不能开门_如何使用小米手环5 NFC版进行门卡模拟(如公司门禁卡、小区门禁卡、学校门禁卡等)?...

由于本人最近购入了小米手环5 NFC版,所以对小米手环模拟门禁卡比较清楚一点。说一下用该手环模拟门禁的方法吧,我本人模拟的是学校公寓的门禁卡,不过学校的门禁卡是加密卡,可能操作起来稍微比不加密的门禁卡麻烦一点,因…

5.NIO零拷贝与传统IO的文件传输性能比较

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.本文部分内容参考自 NIO效率高的原理之零拷贝与直接内存映射 - 腾讯云开发者社区-腾讯云 【1】零拷贝原理 【1.1】传统IO的文件拷贝 【图解】 step1)调用 sys_read系统调用&#…

二进制漏洞利用与挖掘_二进制各种漏洞原理实战分析总结

本部分将对常见的二进制漏洞做系统分析,方便在漏洞挖掘过程中定位识别是什么类型漏洞,工欲善其事,必先利其器。0x01栈溢出漏洞原理栈溢出漏洞属于缓冲区漏洞的一种,实例如下:编译后使用windbg运行直接运行到了地址0x41…

Oracle入门(十四H)之良好的编程实践

一、为什么要学习它 好的编程实践是技巧,可以按照创建最好的代码可能。 编程实践涵盖了一切从代码更多可以用更快的速度创建代码性能。 软件工程团队通常会遵循风格指导让团队中的每个人使用相同的技术。 这使它更容易阅读和修改编写的代码其他。二、编程实践已经学…

微软.NET 正式劈腿成功,横跨所有平台

.NET官方博客宣布了《Announcing .NET Core RC2 and .NET Core SDK Preview 1》,正式如期发布了.NET Core RC2, 现在可以放心的基于.NET Core 构建 ASP.NET Core, console apps 和 class libraries for Windows, OS X and Linux。这里贴张图表达下他们之间的关系: …

2.BIO与NIO区别

【README】 1.本文总结自B站《netty-尚硅谷》,很不错;2.本文介绍 BIO, NIO的知识;【1】BIO(传统java IO模型) 1)BIO-Blocking IO:同步阻塞,服务器实现模式为一个连接一…

k8s往secret里导入证书_K8S之Secret

简介secret顾名思义,用于存储一些敏感的需要加密的数据。这些数据可能是要保存在pod的定义文件或者docker的镜像中。把这些数据通过加密的方式存放到secrets对象中,可以降低信息泄露的风险。在secret中存储的数据都需要通过base64进行转换加密后存放。创…

Oracle入门(十四G)之PL / SQL中检索数据

一、PL / SQL中检索数据 (1)PL / SQL中的SQL语句可以在PL / SQL中使用以下几种SQL语句:•SELECT从数据库检索数据。•DML语句,例如INSERT,UPDATE和DELETE,以更改数据库中的行。•事务控制语句,例…

.NET Core 1.0 CentOS7 尝试

昨天宣布 ASP.NET Core RC2,据说差不多稳定了,以后不会有大改了。 参考:https://blogs.msdn.microsoft.com/webdev/2016/05/16/announcing-asp-net-core-rc2/ 一、环境装备 等待很久了,高兴之余昨晚安装一个CentOS系统,版本如下&a…

6.netty线程模型-Reactor

【README】 1..本文部分内容翻译自: [Netty] Nettys thread model and simple usage 2.netty模型是以 Reactor模式为基础的,具体的,netty使用的是 主从Reactor多线程模型; 3.先介绍了 Reactor线程模型;后介绍了 Ne…

python mac读取 文件属性_从Python获取和设置mac文件和文件夹查找器标签

macfile模块是^{}模块的一部分,在"2006-11-20 0.2.0"中被重命名为mactypes使用此模块,以下两个函数可用于获取和设置appscript 1.0版的查找器标签:from appscript import appfrom mactypes import File as MacFile# Note these lab…