oracle 函数的条件判断,oracle 学习之基础篇(五):通用函数 条件判断函数 分页

本文介绍 Oracle 数据库中常用的 SQL 函数,包括 NVL、NVL2、NULLIF 和 CASE 表达式的使用方法,以及如何利用这些函数进行数据处理。此外,还详细解释了 Oracle 分页查询的方法,通过 rownum 的特性和应用实现特定范围记录的检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通用函数 条件判断函数

使用 NVL(a,b) 通用函数,统计员工年收入,NVL() 作用于任何类型,即(number/varchar2/date)

通用函数:参数类型可以是 number 或 varchar2 或 date 类型select ename,sal*12+NVL(comm,0) from emp;

使用NVL2(a,b,c)通用函数,如果a不为 NULL,取 b 值,否则取 c 值,统计员工年收入select ename,sal*12+NVL2(comm,comm,0) from emp;

使用 NULLIF(a,b)通用函数,在类型一致的情况下,如果 a 与 b 相同,返回 NULL,否则返回 a,比较10和10.0是否相同select NULLIF(10,'10') from dual;

使用 SQL99标准通用语法中的case 表达式,将职位是分析员的,工资+1000;职位是经理的,工资+800;职位是其它的,工资+400case 字段

when 条件1 then 表达式1

when 条件2 then 表达式2

else 表达式n

end

select ename "姓名",job "职位",sal "涨前工资",

case job

when 'ANALYST' then sal+1000

when 'MANAGER' then sal+800

else sal+400

end "涨后工资"

from emp;

使用oracle专用语法中的decode()函数,职位是分析员的,工资+1000;职位是经理的,工资+800;职位是其它的,工资+400decode(字段,条件1,表达式1,条件2,表达式2,...表达式n)

select ename "姓名",job "职位",sal "涨前工资",

decode(job,'ANALYST',sal+1000,'MANAGER',sal+800,sal+400) "涨后工资"

from emp;

image1.png

oracle 分页

回顾mysql分页

用limit关键字

查询users表中前二条记录select * from users limit 0,2

select * from users limit 2;0表示第一条记录的索引号,索引号从0开始 2表示最多选取二个记录

查询出users前三条记录select * from users limit 0,3

select * from users limit 3

查询出users第2条到第4条记录select * from users limit 1,3;

什么是rownum,有何特点

1)rownum是oracle专用的关健字

2)rownum与表在一起,表亡它亡,表在它在

3)rownum在默认情况下,从表中是查不出来的

4)只有在select子句中,明确写出rownum才能显示出来

5)rownum是number类型,且唯一连续

6)rownum最小值是1,最大值与你的记录条数相同

7)rownum也能参与关系运算rownum = 1 有值

rownum < 5 有值

rownum <=5 有值

rownum > 2 无值

rownum >=2 无值

rownum <>2 有值 与 rownum < 2 相同

rownum = 2 无值

8)基于rownum的特性,我们通常rownum只用于

显示emp表中3-8条记录(方式一:使用集合减运算)select rownum "伪列",emp.* from emp where rownum<=8

minus

select rownum,emp.* from emp where rownum<=2;

显示emp表中3-8条记录(方式二:使用子查询,在from子句中使用,重点)select xx.*

from (select rownum ids,emp.* from emp where rownum<=8) xx

where ids>=2;

注意:在子查询中的别名,不可加""引号

显示emp表中5-9条记录select yy.*

from (select rownum ids,emp.* from emp where rownum<=9) yy

where ids>=5;注意:在项目中,from后台可能有真实表名,也可能用子查询看作的表名,同时真实表和子查询看作的表要做连接查询

hogen

2017-09-09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值