3、case when函数
3、case when函数
1、单行函数分类:一行记录,返回一行结果;
2、其他常用函数:空值处理函数
测试数据如下:
1)nvl(a,b):a为空,就用b值填充。
SQL> select id,nvl(id,'0'),
2 name,nvl(name,'哈哈'),
3 comm,nvl(comm,0)
4 from test;
ID NVL(ID,'0') NAME NVL(NAME,'哈哈') COMM NVL(COMM,0)
-------------------- -------------------- -------------------- -------------------- --------- -----------
1 1 唐僧 唐僧 0
0 孙悟空 孙悟空 400.00 400
3 3 哈哈 200.00 200
4 4 刘备 刘备 300.00 300
0 哈哈 200.00 200
6 6 哈哈 0
6 rows selected
2)nvl2(a,b,c):a为空,返回csql nvl 函数,否则返回b。
SQL> select nvl2(name,name,'无名氏'),sal,comm,sal+nvl2(comm,comm,0)"总工资" from test;
NVL2(NAME,NAME,'无名氏') SAL COMM 总工资
------------------------ --------- --------- ----------
唐僧 1200.00 1200
孙悟空 1500.00 400.00 1900
无名氏 1300.00 200.00 1500
刘备 1400.00 300.00 1700
无名氏 1200.00 200.00 1400
无名氏 1300.00 1300
6 rows selected
3)(a,b):比较a和b是否相等sql nvl 函数,相等返回空3、case when函数3、case when函数,不相等返回a。
SQL> select nullif(2,2) from dual;
NULLIF(2,2)
-----------
SQL> select nullif(2,5) from dual;
NULLIF(2,5)
-----------
2
4)(a,b,c,d…):可以传入n个参数sql nvl 函数,返回第一个不为空的值。
-从左到右依次检测a,b,c,d哪一个不为空。当遇到第一个不为空的值,就返回该值。
SQL> select coalesce(null,null,3,null,4,5) from dual;
COALESCE(NULL,NULL,3,NULL,4,5)
------------------------------
3
SQL> select sal,comm,sal+coalesce(comm,0)"总工资" from test;
SAL COMM 总工资
--------- --------- ----------
1200.00 1200
1500.00 400.00 1900
1300.00 200.00 1500
1400.00 300.00 1700
1200.00 200.00 1400
1300.00 1300

6 rows selected
3、case when函数
----------------------- 第一种使用方式
SQL> select sal,
2 case
3 when sal>=1500 and sal<2000 then '优秀'
4 when sal>=1300 and sal<1500 then '中等'
5 when sal>=1000 and sal<1300 then '及格'
6 end "工资等级"
7 from test;
SAL 工资等级
--------- --------
1200.00 及格
1500.00 优秀
1300.00 中等
1400.00 中等
1200.00 及格
1300.00 中等
6 rows selected
----------------------- 第二种使用方式
SQL> select sal,
2 case when sal>=1000 and sal<1300 then 1 else 0 end "及格",
3 case when sal>=1300 and sal<1500 then 1 else 0 end "中等",
4 case when sal>=1500 and sal<2000 then 1 else 0 end "优秀"
5 from test;
SAL 及格 中等 优秀
--------- ---------- ---------- ----------
1200.00 1 0 0
1500.00 0 0 1
1300.00 0 1 0
1400.00 0 1 0
1200.00 1 0 0
1300.00 0 1 0
4、函数:常与sign()符号函数合起来使用。 1)等值判断
SQL> select
2 decode(name,null,'无名氏',name),
3 sal
4 from test;
DECODE(NAME,NULL,'无名氏',NAME SAL
---------------------------------------- ---------
唐僧 1200.00
孙悟空 1500.00
无名氏 1300.00
刘备 1400.00
无名氏 1200.00
无名氏 1300.00
6 rows selected
SQL> select
2 decode(name,null,'无名氏','唐僧','唐僧1','孙悟空','孙悟空1','刘备','刘备1'),
3 sal
4 from test;
DECODE(NAME,NULL,'无名氏','唐? SAL
------------------------------ ---------
唐僧1 1200.00
孙悟空1 1500.00
无名氏 1300.00
刘备1 1400.00
无名氏 1200.00
无名氏 1300.00

6 rows selected
2)非等值判断
SQL> select sign(-5) from dual;
SIGN(-5)
----------
-1
SQL> select sign(0) from dual;
SIGN(0)
----------
0
SQL> select sign(5) from dual;
SIGN(5)
----------
1
SQL> select sal,
2 decode(sign(sal-1300),
3 -1,
4 '不及格',
5 0,
6 '中等',
7 1,
8 decode(sign(sal-1500),
9 -1,
10 '中等',
11 0,
12 '优秀',
13 1,
14 '优秀'))
15 from test;
SAL DECODE(SIGN(SAL-1300),-1,'不及
--------- ------------------------------
1200.00 不及格
1500.00 优秀
1300.00 中等
1400.00 中等
1200.00 不及格
1300.00 中等
6 rows selected
推荐
华为开发者空间发布
让每位开发者拥有一台云主机
公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 3、case when函数
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 3、case when函数
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码