广告
返回顶部
首页 > 资讯 > 数据库 >oracle中case和decode如何使用
  • 223
分享到

oracle中case和decode如何使用

2024-04-02 19:04:59 223人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关oracle中case和decode如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 总结: DE

这期内容当中小编将会给大家带来有关oracle中case和decode如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

总结

DECODE 与CASE WHEN 的比较

      1.DECODE 只有Oracle 才有,其它数据库不支持;

      2.CASE WHEN的用法, Oracle、SQL ServerMysql 都支持;

      3.DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,CASE when可用于=,>=,<,<=,<>,is null,is not null 等的判断;

      4.DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;

      5.另外,在decode中,null和null是相等的,但在case when中,只能用is null来判断;decode函数还能用于行转列。

一、case表达式用法:
case when

case when 类似我们的if ...then..else ,判断语句

语法如下:

CASE expr WHEN expr1 THEN return_expr1

         [WHEN expr2 THEN return_expr2

          ...

          WHEN exprn THEN return_exprn

          ELSE else_expr]

END

第二种延伸用法:

CASE

         WHEN  expr1 THEN return_expr1

         [WHEN expr2 THEN return_expr2

          ....

          WHEN exprn THEN return_exprn

          ELSE else_expr]

END
-- 如果部门编号为10的,显示为sal*1.1

-- 如果部门编号为20的,显示为sal*1.2

-- 如果部门编号为30的,显示为sal*1.3

-- 否则显示为sal

-- 这一列查询的结果,列名显示为 isal
sql> select ename,deptno,sal,case deptno when 10 then sal*1.1

  2  when 20 then sal*1.2

  3  when 30 then sal*1.3

  4  else sal

  5  end isal from test_emp;

 ENAME          DEPTNO      SAL       ISAL
----------            ----------     ---------- ----------

AAAABC

SMITH              20             800        960

ALLEN              30            1600       2080

WARD              30            1250       1625

JONES              20             2975       3570

MARTIN          30            1250       1625

BLAKE              30            2850       3705

CLARK              10           2450        2695

SCOTT              20           3002        3602.4

KING                10           5000        5500

TURNER          30          1500        1950

 ADAMS          20           1100       1320

JAMES             30             950       1235

FORD               20          3000       3600

MILLER           10          1300       1430

 15 rows selected.

第二种写法:
SQL> select ename,deptno,sal,case when deptno=10 then sal*1.1

  2  when deptno=20 then sal*1.2

  3  when deptno=30 then sal*1.3

  4  else sal

  5  end isal from test_emp;

 ENAME          DEPTNO      SAL       ISAL
----------            ----------     ---------- ----------

AAAABC

SMITH              20            800          960

ALLEN              30           1600       2080

WARD             30            1250       1625

JONES              20           2975       3570

MARTIN          30          1250       1625

BLAKE              30          2850       3705

CLARK              10          2450       2695

SCOTT              20         3002       3602.4

KING                10         5000       5500

TURNER          30         1500       1950

ADAMS            20         1100       1320

JAMES              30           950       1235

FORD               20         3000       3600

MILLER            10        1300       1430

 15 rows selected.

case不等值表达式的用法:

SQL> select ename,deptno,sal,case when sal<2000 then sal+200

  2 when  sal between 2000 and 3000 then sal+100

  3  else sal

  4  end isal from test_emp;

 ENAME          DEPTNO      SAL       ISAL
----------            ----------     ---------- ----------

AAAABC

SMITH             20        800       1000

ALLEN              30       1600       1800

WARD              30       1250       1450

JONES              20        2975       3075

MARTIN          30        1250       1450

BLAKE              30       2850       2950

CLARK              10       2450       2550

SCOTT              20       3002       3002

KING                10       5000       5000

TURNER          30       1500       1700

 ADAMS           20       1100       1300

JAMES              30        950       1150

FORD               20       3000       3100

MILLER           10       1300       1500

15 rows selected.


case用于判断空值,避免使用空值函数
SQL> select ename,sal,comm,case when comm is null then sal else sal+comm end isal from emp;

 ENAME          DEPTNO      SAL       ISAL
----------            ----------     ---------- ----------

AAAABC

SMITH             800                           800

ALLEN            1600        300        1900

WARD            1250        500       1750

JONES             2975                      2975

MARTIN        1250       1400      2650

BLAKE            2850                     2850

CLARK            2450                     2450

SCOTT            3002                    3002

KING             5000                     5000

TURNER       1500          0        1500

ADAMS         1100                    1100

JAMES             950                   950

FORD             3000                  3000

MILLER         1300                  1300

15 rows selected.

二、decode函数用法
语法:

DECODE(col|expression, search2, result1

                       [, search3, result2,...,]

                        ...

                       [, searchn, resultn,...,]

                       [, default])

如果 条件=值1,那么显示结果1

如果 条件=值2,那么显示结果2

....

如果 条件=值n,那么显示结果n

都不符合,则显示缺省值
decode函数等值表达式的用法,与上面case表达式用法相比简便一些:
SQL> select ename,deptno,sal,decode(deptno,10,1.1*sal,20,1.2*sal,30,1.3*sal)isal from emp;
 ENAME          DEPTNO      SAL       ISAL
----------            ----------     ---------- ----------
AAAABC
SMITH              20            800        960
ALLEN              30          1600       2080
WARD              30          1250       1625
JONES              20          2975       3570
MARTIN          30         1250       1625
BLAKE              30       2850       3705
CLARK              10       2450       2695
SCOTT              20       3002     3602.4
KING                10       5000       5500
TURNER          30       1500       1950
ADAMS            20       1100       1320
JAMES              30        950       1235
FORD               20       3000       3600
MILLER            10       1300       1430
15 rows selected.
注:decode不能用于非等值用法。

延伸用法:与sign函数联用比较大小

注:sign()函数根据参数1的值是0、正数还是负数,分别返回0、1、-1

select ename,sal,decode(sign(sal-2000),1, '>2000 ',-1, '<2000 ', '=2000 ') sal_level

from emp;

ENAME                       SAL SAL_LEVEL

-------------------- ---------- -----------

SMITH                       800 <2000

ALLEN                      1600 <2000

WARD                       1250 <2000

JONES                      2975 >2000

MARTIN                     1250 <2000

BLAKE                      2850 >2000

CLARK                      2450 >2000

SCOTT                      3000 >2000

KING                       5000 >2000

TURNER                     1500 <2000

ADAMS                      1100 <2000

JAMES                       950 <2000

FORD                       3000 >2000

MILLER                     1300 <2000

decode函数用于行转列的转换

SQL> select to_char(hiredate,'yyyy') from emp;

TO_C

----
1980

1981

1981

1981

1981

1981

1981

1987

1981

1981

TO_C

----

1987

1981

1981

1982

15 rows selected.

SQL> select to_char(hiredate,'yyyy'),count(*) from emp group by to_char(hiredate,'yyyy');

 TO_C   COUNT(*)

---- ----------

                   1

1987          2

1980          1

1982          1

1981         10

SQL> select sum(decode(to_char(hiredate,'yyyy'),'1980',1))"1980",sum(decode(to_char(hiredate,'yyyy'),'1981',1))"1981",
sum(decode(to_char(hiredate,'yyyy'),'1987',1))"1987",sum(decode(to_char(hiredate,'yyyy'),'1982',1))"1982" from emp;

      1980       1981       1987       1982

---------- ---------- ---------- ----------

         1         10          2          1

上述就是小编为大家分享的oracle中case和decode如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: oracle中case和decode如何使用

本文链接: https://www.lsjlt.com/news/56082.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle中case和decode如何使用
    这期内容当中小编将会给大家带来有关oracle中case和decode如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 总结: DE...
    99+
    2022-10-18
  • 如何正确使用case when表达式 和 decode函数?
    相信很多小伙伴在开发过程中都有用到case when表达式和decode函数,那么会不会有小伙伴和我一样刚开始有很多疑虑,什么情况下用case when,什么情况下用decode呢?两者有什么区别呢...
    99+
    2022-10-18
  • oracle中如何使用decode函数
    今天就跟大家聊聊有关oracle中如何使用decode函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  一、DECODE函数是ORACLE PL...
    99+
    2022-10-18
  • Oracle中decode函数如何使用
    这篇文章将为大家详细讲解有关Oracle中decode函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。函数介绍:DECODE函数是ORACLE P...
    99+
    2022-10-18
  • oracle中的decode怎么使用
    Oracle中的DECODE函数用于将表达式与一系列条件进行比较,并返回第一个满足条件的结果。如果没有条件满足,则返回ELSE子句中...
    99+
    2023-08-28
    oracle decode
  • oracle中的decode的使用介绍
    含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN    RETURN(翻译值1)ELSI...
    99+
    2022-11-15
    oracle decode
  • Oracle中decode函数怎么使用
    小编给大家分享一下Oracle中decode函数怎么使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!DECODE含义decode(条件,值1,返回值1,值2,返...
    99+
    2023-06-22
  • oracle中decode函数的使用方法
    本篇文章给大家分享的是有关oracle中decode函数的使用方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。decode的几种用法1:使用...
    99+
    2022-10-18
  • 怎么在oracle中使用decode函数
    今天就跟大家聊聊有关怎么在oracle中使用decode函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1:使用decode判断字符串是否一样DE...
    99+
    2022-10-18
  • decode函数怎么在Oracle中使用
    decode函数怎么在Oracle中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。含义解释: decode(条件,值1,返回值1,值2...
    99+
    2022-10-18
  • C# 中switch和case如何使用
    今天就跟大家聊聊有关C# 中switch和case如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。public static class Swit...
    99+
    2023-06-17
  • oracle中的case when怎么使用
    在Oracle中,CASE WHEN语句用于根据指定的条件执行不同的操作。它的基本语法如下:CASEWHEN condition1 ...
    99+
    2023-08-23
    oracle
  • oracle中的case when then怎么使用
    本篇内容主要讲解“oracle中的case when then怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle中的case when t...
    99+
    2023-07-05
  • oracle中关于case when then的使用
    目录关于case when then的使用oracle语句中case when起别名总结关于case when then的使用 1.首先创建两个表emp,emp_bonus如下: (1)emp_bonus: > (2)e...
    99+
    2023-03-01
    oracle case when then case when then的使用 关于case when then
  • sql中如何使用case when
    这篇文章主要介绍了sql中如何使用case when,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sql中case when的用法case具...
    99+
    2022-10-18
  • sql中如何使用case语句
    本篇文章给大家分享的是有关sql中如何使用case语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SQL中Case的使用方法Case具有两种...
    99+
    2022-10-18
  • VB.NET中如何使用CASE语句
    这篇文章将为大家详细讲解有关VB.NET中如何使用CASE语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。VB.NET CASE语句:复制内容到剪贴板 程序代码Select Case ...
    99+
    2023-06-17
  • C++中如何使用switch-case语句
    今天就跟大家聊聊有关C++中如何使用switch-case语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果...
    99+
    2023-06-17
  • 如何在表达式中使用Mysql SELECT CASE
    在MySQL中,可以使用SELECT CASE语句来根据不同的条件选择不同的值或执行不同的操作。下面是一个示例,展示了如何在...
    99+
    2023-09-26
    Mysql
  • 如何在 MySQL CASE 语句中使用列数据?
    要理解它,请考虑“学生”表中的数据,如下所示 -mysql> Select * from Students; +----+-----------+-----------+----------+----------------...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作