说说 Oracle 的 CASE 表达式[亲测有效]

说说 Oracle 的 CASE 表达式[亲测有效]使用 CASE 表达式,我们可以在 SQL 中实现类似 if-elseif-else 逻辑。Oracle 9i 及其以上版本,都支持 CASE 表达式。 推荐使用 CASE 表达式,因为相对于 DECODE() 函数来说,CASE 表达式与 ANSI 兼容,且已成为 SQL /…

说说 Oracle 的 CASE 表达式[亲测有效]

使用 CASE 表达式,我们可以在 SQL 中实现类似 if-elseif-else 逻辑。Oracle 9i 及其以上版本,都支持 CASE 表达式。

推荐使用 CASE 表达式,因为相对于 DECODE() 函数来说,CASE 表达式与 ANSI 兼容,且已成为 SQL /92 标准的一部分,而且 CASE 表达式更易理解。

1 使用表达式确定返回值

语法如下:

CASE search_expression
  WHEN expression1 THEN result1
  WHEN expression2 THEN result2
 ...
  WHEN expressionN THEN resultN 
  ELSE default_result
END

其中 :

  • search_expression 是待求值的表达式 。
  • expression1 、expression2、…、expressionN 是要与 search_expression 进行比较的表达式 。
  • result1 、 result 2、…、 resultN 是相应逻辑判断分支的返回值。假设 expressionN 的值等于 search_expression ,那么就返回 resultN ,以此类推。
  • ELSE 中的 default_result 是当上述表达式都无法匹配时,所返回的默认值。
select n.STAFF_NAME,
  case n.PASSWORD_LEVEL
    when 1 then '弱密码'
    when 2 then '中等密码'
    when 3 then '强密码'
    else '未知'
  end
from  NCC_STAFF_MANAGER n;

运行结果:

说说 Oracle 的 CASE 表达式[亲测有效]

注意: NULL 必须放在 else 条件中才有效。放在 when 表达式中,无法判定:

select
  case null
    when null then 'null'
  else 'when 中无法比较'
  end
from dual;

运行结果:

when 中无法比较

从这个示例中可以看出, when null 无效,实际 null 表达式走的是 else 分支。

2 使用条件确定返回值

语法如下:

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  WHEN conditionN THEN resultN
  ELSE default_result
END

与“使用表达式确定返回值”的语法相比较,少了 search_expression。其它部分相同。

我们可以把上例改为 “使用条件确定返回值” 的语法形式,实现同样的功能:

select n.STAFF_NAME,
  case
    when n.PASSWORD_LEVEL=1 then '弱密码'
    when n.PASSWORD_LEVEL=2 then '中等密码'
    when n.PASSWORD_LEVEL=3 then '强密码'
    else '未知'
  end
from  NCC_STAFF_MANAGER n;

在“使用表达式确定返回值”的语法中,我们还可以在 when 表达式中使用操作符,请看下例:

select n.STAFF_NAME,
  case
    when n.PASSWORD_LEVEL<=2 then '密码修改提醒'
    when n.PASSWORD_LEVEL>2 then '强密码'
    else '未知'
  end
from  NCC_STAFF_MANAGER n;

运行结果:

说说 Oracle 的 CASE 表达式[亲测有效]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12987.html

(0)

相关推荐

  • Docker 搭建 MySQL 服务[亲测有效]

    Docker 搭建 MySQL 服务[亲测有效]安装 Docker 请参考我的另一篇文章 "Docker 安装及使用" 建立镜像 拉取镜像 检查拉取是否成功 创建数据库容器(不建立数据映射) 创建数据库容器(建立数据映射) 检查

    2023-02-21
    152
  • Python中super()方法的使用

    Python中super()方法的使用在Python中,使用继承是非常常见的方式。当子类继承了父类的属性和方法后,有时候需要对父类中的方法进行扩展或是修改。而调用父类的方法,则需要使用super()方法。在本文中,我们将详细介绍Python中super()方法的使用,以及它的一些特性和注意事项。

    2024-05-23
    55
  • Ubuntu查询IP地址命令

    Ubuntu查询IP地址命令Ubuntu查询IP地址命令是指在Ubuntu/Linux系统中查看自己计算机的IP地址的方法,这对于进行网络连接、开发和维护系统等操作都是至关重要的。本文将介绍几种在Ubuntu系统中查询IP地址的命令行方法,帮助读者可以快速准确地获取自己计算机的IP地址。

    2024-04-16
    88
  • sql server的简单分页

    sql server的简单分页–显示前条数据 select top(4) * from students; –pageSize:每页显示的条数 –pageNow:当前页 select top(pageSize) * from

    2022-12-24
    146
  • Python CGI程序:动态生成网页内容

    Python CGI程序:动态生成网页内容
    CGI的全称是Common Gateway Interface,也就是通用网关接口。它是连接Web服务器和CGI脚本(或程序)的接口标准。通过CGI,Web服务器可以将请求连接到后台程序,并且将程序的输出返回到客户端浏览器,实现了Dynamically Generating Web Pages的效果。目前,CGI已经被一些新的更优秀的解决方案所替代,但是CGI仍然是编写交互式Web应用程序的基础技术。

    2024-03-05
    76
  • @InsertProvider 或者 @SelectProvider 同 text.xml 配置文件使用优劣[通俗易懂]

    @InsertProvider 或者 @SelectProvider 同 text.xml 配置文件使用优劣[通俗易懂]1.有时候我们根据参数输入条件决定插入什么数据, 用text.xml 当减少实体类的某些属性,你需要到text.xml 一个一个的删掉多余的属性,但是通过InsertProvider 写的因为和类直…

    2023-03-10
    146
  • 技术分享 | MySQL 组复制数据一致性管理解析[亲测有效]

    技术分享 | MySQL 组复制数据一致性管理解析[亲测有效]作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生…

    2023-02-28
    148
  • iPython VS Python:区别

    iPython VS Python:区别Python是一种高级编程语言,以简单易学、易读易写、多种编程范式、强调代码的可读性而著名。而iPython是Python的一种增强型交互式解释器,它在Python的基础上新增了许多有用的功能,使得开发和调试更加方便。

    2024-05-26
    83

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注