通用函数

目录

处理null

多数值判断


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

Oracle 提供了两个简单的数据处理函数: nvl()、decode()。在版本升级的过程中,这两个函数又衍生出了许多子函数

处理null

下面首先通过查询,计算出每一个员工的年薪,包括基本工资和佣金

SQL> select empno,ename,job,sal,comm,(sal+comm)*12 income
  2  from emp;

     EMPNO ENAME                JOB                       SAL       COMM     INCOME
---------- -------------------- ------------------ ---------- ---------- ----------
      7369 SMITH                CLERK                     800
      7499 ALLEN                SALESMAN                 1600        300      22800
      7521 WARD                 SALESMAN                 1250        500      21000
      7566 JONES                MANAGER                  2975
      7654 MARTIN               SALESMAN                 1250       1400      31800
      7698 BLAKE                MANAGER                  2850
      7782 CLARK                MANAGER                  2450
      7839 KING                 PRESIDENT                5000
      7844 TURNER               SALESMAN                 1500          0      18000
      7900 JAMES                CLERK                     950
      7902 FORD                 ANALYST                  3000

可以发现,com 和 income 列中有许多是空的

上述现象的原因在于,所有没有佣金的员工,在进行年收入计算的时候,最终的计算结果都是null,因为 nul 在进行任何数学计算后结果永远都是 null。而实际上在计算过程中,如果发现数字内容为 null,则应该使用 0 来替代,这时就需要利用 nvl() 函数来解决此类问题

nvl( 列 | null,为空的默认值 )

如果列上的内容不是 null,则使用列的数据;如果为 null,则使用默认值

SQL> select empno,ename,job,sal,comm,nvl(comm,0),(sal+nvl(comm,0))*12 income
  2  from emp;

     EMPNO ENAME                JOB                       SAL       COMM NVL(COMM,0)     INCOME
---------- -------------------- ------------------ ---------- ---------- ----------- ----------
      7369 SMITH                CLERK                     800                      0       9600
      7499 ALLEN                SALESMAN                 1600        300         300      22800
      7521 WARD                 SALESMAN                 1250        500         500      21000
      7566 JONES                MANAGER                  2975                      0      35700
      7654 MARTIN               SALESMAN                 1250       1400        1400      31800
      7698 BLAKE                MANAGER                  2850                      0      34200
      7782 CLARK                MANAGER                  2450                      0      29400
      7839 KING                 PRESIDENT                5000                      0      60000
      7844 TURNER               SALESMAN                 1500          0           0      18000
      7900 JAMES                CLERK                     950                      0      11400
      7902 FORD                 ANALYST                  3000                      0      36000

这个查询使用函数 NVL(comm,0),把 com 列所有的 nul 都替换为 0

多数值判断

所谓的多数值判断,指的是在输出的时候,对不同的结果分别进行数据转换。例如,每一位员工的职位使用的都是英文描述,在输出查询结果时决定将其更换为中文

decode( 列,匹配内容 1,显示内容 1,匹配内容 2,显示内容 2,...[,默认值 ])
SQL> select empno,ename,job,decode(job,'CLERK','办事员','SALESMAN','销售','MANAGER','经理','ANALYST','分析','PRESIDENT','总裁','暂无此 消息')
  2  from emp;

     EMPNO ENAME                JOB                DECODE(JOB,'CLERK','办事员','S
---------- -------------------- ------------------ ------------------------------
      7369 SMITH                CLERK              办事员
      7499 ALLEN                SALESMAN           销售
      7521 WARD                 SALESMAN           销售
      7566 JONES                MANAGER            经理
      7654 MARTIN               SALESMAN           销售
      7698 BLAKE                MANAGER            经理
      7782 CLARK                MANAGER            经理
      7839 KING                 PRESIDENT          总裁
      7844 TURNER               SALESMAN           销售
      7900 JAMES                CLERK              办事员
      7902 FORD                 ANALYST            分析

可以发现每一位员工职位的英文描述更换为了中文

你可能感兴趣的:(Oracle从小白到总裁,数据库,oracle,sql)