当前位置: 首页 > article >正文

通用函数

目录

处理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            分析

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


http://www.kler.cn/a/228207.html

相关文章:

  • 洛谷刷题1-3
  • JAVA毕业设计210—基于Java+Springboot+vue3的中国历史文化街区管理系统(源代码+数据库)
  • c#的tabControl控件实现自定义标签颜色
  • 数据结构测试题2
  • 一个基于Python+Appium的手机自动化项目~~
  • linux-ubuntu学习笔记碎记
  • 【C/C++ 14】C++11智能指针
  • MySQL操作问题汇总
  • 06 - python操作xml
  • CI/CD总结
  • 【算法题】91. 解码方法
  • 详解 Spring Boot 条件装配
  • 考研中常见的算法-逆置
  • 在 iOS 上安装自定企业级应用
  • Matplotlib绘制炫酷柱状图的艺术与技巧【第60篇—python:Matplotlib绘制柱状图】
  • 2 月 3 日算法练习-数论
  • 网络安全笔记
  • 假期刷题打卡--Day23
  • 蓝桥杯Web应用开发-display属性
  • 开源计算机视觉库OpenCV详细介绍
  • Ainx框架实现 一
  • spring boot3x登录开发-上(整合jwt)
  • Bagging的随机森林;Boosting的AdaBoost和GBDT
  • 【Kotlin】Kotlin环境搭建
  • 【用Unity开发一款横板跳跃游戏部分需要学习的技术点指南】
  • Python基础学习 -05-2 基本类型