天天看点

数据库通用函数的使用

通用函数的使用

1. NVL(数字|列,默认值):如果显示数字是null,则使用默认数值表示,如果不为空,则显示原始值;

数据之中null是无法计算的,因为他是一个无法确定的值,所以它参加数学计算的话结果为null

要求查询出每个雇员的编号,姓名,职位,雇拥日期,年薪

SELECT empno,ename,job,hiredate,comm,(sal+NVL(comm,0))*12 年薪

FROM emp;

验证NVL()函数

SELECT NVL(3,2)

FROM dual;

2. NVL2(数字|列,返回结果1(不为空显示),返回结果2(为空显示)):判断指定列是否是null,如果不为null则显示结果1,否则返回结果2

查询每个雇员的编号,姓名,年薪,基本工资,奖金

SELECT empno,ename,NVL2(comm,sal+comm,sal)*12 年薪,sal,comm

FROM emp;

3. NULLIF(表达式1,表达式2):比较表达式1和表达式2的结果是否相等,如果相等返回NULL,如果不等返回表达式1

1.验证NULLIF()函数

SELECT NULLIF(1,1),NULLIF(1,2)

FROM dual;

2.验证NULLIF()函数:比较名字的长度和工作的名字长度是否相等

SELECT empno,ename,job,LENGTH(ename),LENGTH(job),

      NULLIF(LENGTH(ename),LENGTH(job)) NULLIF

FROM emp;

4. DECODE(列|值,判断值1,显示结果1.判断值2,显示结果2.。。。默认值):多值判断,如果某一个列(或者某一个值)与判断值相同,则使用指定的显示结果输出,如果没有满足条件,则显示默认值:就是哪个条件满足了,就直接输出这个条件的显示结果,否则显示默认值

验证DECODE()函数

SELECT

      DECODE(2,1,'内容为1',2,'内容为2'),

      DECODE(2,1,'内容为1','没有满足条件')

FROM dual;

查询雇员的姓名,职员,基本工资等信息,但是要求所有的职位信息都换成中文显示:

SELECT ename,job,

      DECODE(job,'CLERK','业务员',

      'SALESMAN','销售人员',

      'MANAGER','经理',

      'ANALYST','分析员',

      'PRESIDENT','jijie_KING'

      ) 职位

FROM emp;

5. CASE列|数值WHEN表达式1THEN显示结果1….ELSE..表达式N…END:用于是吸纳多条件判断,在WHEN之后编写条件,而在THEN之后编写条件满足的显示操作,如果都不满足则使用ELSE中的表达式处理:就是说case后面为要比较的列或者数值,when后面跟的是一个比较条件(与case后的列|数值相比较)满足的话就执行then后面的操作,不满足就执行else后的操作;

查询每个雇员姓名,工资,职位,同时显示新的工资(新的工资标准为:办事员增加10%,销售增加、20%,经理增加30%,其他职位增加50%)

SELECT ename, sal,job,

      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 NEWSAL

FROM emp;

6. COALESCE(表达式1,表达式2,。。。。表达式n):将表达式逐个判断,如果表达式1的内容是null,则显示表达式2,如果表达式2的内容是null,则显示表达式3,依次类推,如果表达式n的结果还是null,则返回null

验证:

SELECT COALESCE(NULL,'1',NULL,'3')

FROM dual;