SQL Fundamentals || Oracle SQL语言

Oracle自己提供的有特色的函数;

NVL()和DECODE()是通用函数的基础函数,其他函数都在此函数之上进行功能扩充。

函数名称

描述

NVL(数字 | 列 , 默认值)

如果显示的数字是null的话,则使用默认数值表示

使用NVL()函数处理null

    • 在数据库之中,null是无法进行计算的,即,在一个数学计算之中如果存在了null,则最后的结果也肯定是null。
    • 使用NVL()函数解决年薪为null的情况
      • SELECT empno,ename,job,hiredate,(sal + NVL(comm,0)) * 12 年薪 FROM emp ;

NVL2(数字 | 列 , 返回结果一(不为空显示) , 返回结果二(为空显示))

判断指定的列是否是null,如果不为null则返回结果一,为空则返回结果二

    • NVL2()函数是在Oracle 9i之后增加的一个新的功能函数,相比较NVL()函数,NVL2()函数可以同时对为null或不为null进行分别判断并返回不同的结果。
    • 查询每个雇员的编号、姓名、年薪(sal + comm)、基本工资、奖金
      • SELECT empno , ename , NVL2(comm , sal+comm,sal) , sal , comm FROM emp ;

NULLIF(表达式一,表达式二)

比较表达式一和表达式二的结果是否相等,如果相等返回NULL,如果不等返回表达式一

      • NULLIF(表达式一, 表示式二)函数的主要功能判断两个表达式的结果是否相等,如果相等则返回NULL,不相等则返回表达式一。
      • 验证NULLIF()函数
        • SELECT NULLIF(1,1) , NULLIF(1,2) FROM dual ;
        • 验证NULLIF()函数
          • SELECT empno , ename , job , LENGTH(ename) , LENGTH(job) , NULLIF(LENGTH(ename),LENGTH(job)) nullif

FROM emp ;

DECODE(列 | 值 , 判断值1,显示结果1, 判断值2,显示结果2,…, 默认值)

java语言中,if…else判断都是逻辑条件,而在DECODE()里面判断的就是数值.

多值判断,如果某一个列(或某一个值)与判断值相同,则使用指定的显示结果输出,如果没有满足条件,则显示默认值

      • DECODE()函数是Oracle中最有特色的一个函数,DECODE()函数类似于程序中的if…else if…else if…else,但是判断的内容都是一个具体的值,DECODE()函数的语法如下:
        • DECODE(列 | 表达式,值1,输出结果,值2,输出结果,... , 默认值)
      • 测试DECODE()函数
        • SELECT DECODE(2,1,'内容为一',2,'内容为二') , DECODE(2,1,'内容为一','没有条件满足') FROM dual ;
      • 现在雇员表中的工作有以下几种:
        • CLERK:业务员
        • SALESMAN:销售人员
        • MANAGER:经理
        • ANALYST:分析员
        • PRESIDENT:总裁
      • 要求可以查询雇员的姓名、职位、基本工资等信息,但是要求将所有的职位信息都替换为中文显示。
        • SELECT ename, sal ,

DECODE(job,

'CLERK','业务员',

'SALESMAN','销售人员',

'MANAGER','经理',

'ANALYST','分析员',

'PRESIDENT','总裁') job

FROM emp ;

      • 在DECODE()函数中只判断部分内容
        • SELECT ename, sal ,

DECODE(job,

'CLERK','业务员',

'SALESMAN','销售人员',

'MANAGER','经理') job

FROM emp ;

    • 没有判断的内容会变为空,所以要使用DECODE函数就要全部判断.

CASE 列 | 数值 WHEN 表达式1 THEN 显示结果1 … ELSE 表达式N …END

用于实现多条件判断,在WHEN之后编写条件,而在THEN之后编写条件满足的显示操作,如果都不满足则使用ELSE中的表达式处理

      • CASE表达式是在Oracle 9i引入的,功能与DECODE()函数有些类似,都是执行多条件判断。不过严格来讲CASE表达式本身并不属于一种函数的范畴,它的主要功能是针对于给定的列或者是字段进行依次判断,在WHEN中编写判断语句,而在THEN中编写处理语句,最后如果都不满足则使用ELSE进行处理。
      • 显示每个雇员的姓名、工资、职位,同时显示新的工资(新工资的标准为:办事员增长10%、销售人员增长20%、经理增长30%、其他职位的人增长50%)
        • SELECT ename, sal ,

CASE job WHEN 'CLERK' THEN sal * 1.1

WHEN 'SALESMAN' THEN sal * 1.2

WHEN 'MANAGER' THEN sal * 1.3

ELSE      sal * 1.5

END 新工资

FROM emp ;

COALESCE(表达式1, 表达式2 , …表达式n)

,依次类推,如果表达式n的结果还是null,则返回null

      • COALESCE(表达式1,表达式2,表达式3,…表达式n)函数的主要功能是对null进行操作,采用依次判断表达式的方式完成,如果表达式1为null,则显示表达式2的内容,如果表达式2的内容为空,则显示表达式3的内容,依次类推,判断到最后如果还是null,则最终的显示结果就是null。
      • 验证COALESCE()函数的功能
        • SELECT ename, sal, comm, COALESCE(comm,100,2000) , COALESCE(comm,null,null)

FROM emp

SQL Fundamentals || Single-Row Functions || 通用函数 General function || (NVL,NVL2,NULLIF,DECODE,CASE,COALESCE)的更多相关文章

  1. SQL Fundamentals: Using Single-Row Functions to Customize Output使用单行函数自定义输出

    SQL Fundamentals || Oracle SQL语言 DUAL is a public table that you can use to view results from functi ...

  2. oracle通用函数,nvl,nvl2,NULLIF ,coalesce

    Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式:   NVL(commission_pct,0)       ...

  3. SQL Fundamentals || Oracle SQL语言

    对于SQL语言,有两个组成部分: DML(data manipulation language) 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据 ...

  4. SQL Fundamentals || Single-Row Functions || 转换函数 Conversion function

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  5. SQL Fundamentals || Single-Row Functions || 字符函数 character functions

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  6. SQL Fundamentals || Single-Row Functions || 日期函数date functions

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  7. SQL Fundamentals || Single-Row Functions || 数字函数number functions

    SQL Fundamentals || Oracle SQL语言 SQL Fundamentals: Using Single-Row Functions to Customize Output使用单 ...

  8. 微软BI 之SSIS 系列 - Execute SQL Task 中的 Single Row 与 Full Result Set 的处理技巧

    开篇介绍 Execute SQL Task 这个控件在微软BI ETL 项目中使用的频率还是非常高的,也是大部分入门 SSIS 初学者最早接触到的几个控制流控件. 我们通常使用 Execute SQL ...

  9. SQL Fundamentals: Basic SELECT statement基本的select语句(控制操作的现实列)(FROM-SELECT)

    SQL Fundamentals || Oracle SQL语言 Capabilities of the SELECT Statement(SELECT语句的功能) Data retrieval fr ...

随机推荐

  1. 已知大小分别为m、n的两个无序数组A、B和一个常数c,求满足A[i]+B[j]=c的所有A[i]和B[j]

    方法一:枚举法.该方法是最容易.也是最简单的方法,枚举出数组A和数组B中所有的元素对,判断其和是否为c,如果是,则输出. 方法二:排序+二分查找法.首先,对两个数组中长度较大数组,不妨设为A,排序:然 ...

  2. Spring boot配置log4j输出日志

    1. pom.xml文件中配置parent,版本选定[1.2.5.RELEASE] 关于为什么要选这个版本:我尝试使用[1.4.1.RELEASE],但该版本库里没有[spring-boot-star ...

  3. PostgreSQL存储过程(5)-异常错误处理

    1. 异常错误处理 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚.我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复 ...

  4. Code-audit-Learning

    代码审计精华文章收录: 关于php的一些'特性'或漏洞  https://github.com/80vul/phpcodz [干货分享]PHP漏洞挖掘——进阶篇    http://blog.nsfo ...

  5. 手机CPU

    说起手机CPU的历史,笔者给大家提一个问题:"世界上第一款智能手机是什么呢?"相信很多人的答案是爱立信的R380或诺基亚的7650,但都不对,真正的首款智能手机是由摩托罗拉在200 ...

  6. 新唐的开发环境的搭建,驱动以及BSP

    https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...

  7. WP8.1学习系列(第五章)——中心控件Hub或透视控件Pivot交互UX

    具有主页菜单(中心或透视控件)的中心应用中心 你可能要设计包含许多功能的应用.当你看着这些功能时,可能会决定将它们整理到独立的区域中.这些区域最终会成为用户要访问的应用的独立部分.你需要设计一个简便的 ...

  8. java (10) 集合类

    1.集合概述 集合按照存储结构可以分为两类,即单列集合 Collection 和双列集合 Map. * Collection 用于存储一系列符合某种规则的元素,它有两个重要的自接口,分别是List和S ...

  9. 完全卸载Oracle数据库软件

    软件环境: 1.Windows xp+ORACLE 8.1.7 2.ORACLE安装路径为:C:\ORACLE 实现方法: 1. 开始->设置->控制面板->管理工具->服务 ...

  10. pip安装python包出现Cannot fetch index base URL http://pypi.python.org/simple/

    pipinstall***安装python包,出现 Cannot fetch index base URL  http://pypi.python.org/simple /错误提示或者直接安装不成功. ...