3、case when函数

1、单行函数分类:一行记录,返回一行结果;

sql nvl 函数

2、其他常用函数:空值处理函数

sql nvl 函数

测试数据如下:

sql nvl 函数

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
 

sql nvl 函数

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
 

sql nvl 函数

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函数

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们