`
tangkuo
  • 浏览: 100332 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

CASE WHEN

阅读更多

在oracle数据库开发中需要用到各种各样的sql函数和语句来提高自己的开发效率。今天介绍下case when的用法。

    case when 有两种用法,一种是case后面有表达式和case后面没有表达式的。case后面有表达式的方法和decode的功能差不多,case后面没有表达式的话适合一些不以固定值作为判断的写法。请看下面两个例子。

    case when的功能有点像decode但是又比decode的功能强大。

    例如:

    select

    case a

    when 1

    then 'a is 1'

    when 2

    then 'a is 2'

    else

    'others'

    end

    from table1;

    和

    select decode(a,1,'a is 1',2,'a is 2','others') from dual 实现的功能是一样的。这种用法可以参考官方的解说:

    倘若是一些复杂的判断的话decode是胜任不了的。

    select

    case

    when (select count(*) from table2 where id=table1.id)>0 then

    'table2 and table1 is related'

    when (select count(*) from table3 where id=table1.id)>0 then

    'table3 and table1 is related'

    else

    'no table related with table1'

    end

    from table1

    像这样的功能decode就不能实现。随手case when写的复杂一些,但是思路还是非常清晰的。

    关于表达式方面你可以根据实际情况去写,有时候简单有时候复杂。上面的语句中我就写了相对复杂的表达式,表达式是一个select语句。有时候还是比较有用的,如果能用decode解决的话还是用decode比较好,毕竟用case when感觉比较臃肿。反正力求高效简洁吧


普通情况下,用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分),而且SQL语句会比较长。
下面是一个是用Case函数来完成这个功能的例子

SELECT country, 

SUM( CASE WHEN sex = '1' THEN  population ELSE 0 END),  --男性人口 

SUM( CASE WHEN sex = '2' THEN  population ELSE 0 END)   --女性人口 

FROM  Table_A  GROUP BY country; 


这样我们使用Select,完成对二维表的输出形式,充分显示了Case函数的强大。

分享到:
评论

相关推荐

    case when和sum case when 写法及拼接字段

    ### Case When 用法 在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件...

    oracle where case when where后面跟case when

    在Oracle数据库中,`WHERE`子句是SQL查询语句的一部分,用于指定查询条件,而`CASE WHEN`语句则是一种条件表达式,允许我们基于不同的条件返回不同的值。将`CASE WHEN`嵌套在`WHERE`子句中,可以实现更复杂的逻辑...

    详细解析 mysql 中的 case when 语句的使用

    ### MySQL中的Case When语句详解 #### 一、引言 在MySQL中,`CASE WHEN`语句是一种非常有用的控制流程语句,它允许开发者根据不同的条件返回不同的结果。这在处理复杂的数据筛选和聚合任务时特别有用。本文将详细...

    decode函数与case when 的妙用

    在数据库管理和SQL编程中,`DECODE`函数和`CASE WHEN`语句是两种非常重要的逻辑判断工具,它们常用于处理条件分支和数据转换。在这篇文章中,我们将深入探讨这两种方法的用途、区别以及如何巧妙地运用它们。 首先,...

    sql数据库 转 Access SQL语句改写之 Case When Then When Then Else End

    ### SQL数据库转Access SQL语句改写:Case When Then When Then Else End #### 知识点一:SQL CASE WHEN THEN 结构与Access IIF及SWITCH函数对比 在进行SQL到Access SQL的转换过程中,一个重要的知识点是了解如何...

    sql case when exists not exists in not in

    在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...

    case when then

    一条sql语句就能让你case when then怎么用,什么时候用

    casewhen多条件oracle-casewhen(casewhen同时满足多条件).pdf

    Oracle CASE WHEN 多条件语句详解 CASE WHEN 语句是 SQL 中的一种条件语句,用于实现多个条件的判断和执行。它可以用来代替 IF 语句和 SWITCH 语句,在 Oracle 数据库中尤其常用。 CASE WHEN 语句的基本语法是: `...

    Oracle_case_when_用法

    ### Oracle CASE WHEN 用法详解 #### 一、概述 在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`...

    oracle case when 语句的用法详解

    1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASEWHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ ...

    vhdl.rar_case when fpga_频率控制

    本案例主要关注如何使用VHDL中的`case when`语句来实现FPGA(Field-Programmable Gate Array)中的频率控制,特别是针对交通灯控制系统的应用。 交通灯控制系统是城市交通管理的关键部分,它通过精确的时间序列控制...

    case乱码解决

    mysql 中case when 遇到乱码解决。查询语句中含有case引起中文乱码解决方法

    SqlServer使用 case when 解决多条件模糊查询问题

    在SQL Server中,`CASE WHEN` 语句是一种强大的逻辑表达式,用于处理基于不同条件的复杂查询。在多条件模糊查询中,`CASE WHEN` 可以避免在程序端或数据库端拼接SQL字符串,从而减少代码量,提高安全性,并避免SQL...

    mysql case when group by 实例详解

    MySQL中的`CASE WHEN`语句是一种条件判断表达式,它在SQL查询中起到了类似编程语言中`switch-case`或`if-else`的作用。这个功能强大的工具允许你在单个查询中根据不同的条件返回不同的结果值,非常适合数据分析和...

    如何使用CASE WHEN语法判断入参代替if test=user-name != null and user-name !=

    本资源旨在深入探讨如何运用CASE WHEN语法巧妙绕过这些限制,实现更广泛平台兼容性与代码普适性的优雅升级。 1. 破除平台束缚,实现极致兼容性 不同于MyBatis `<if>` 标签在特定ORM框架下的应用,CASE WHEN是...

    MySQL排序中使用CASE WHEN的方法示例

    `CASE WHEN` 是一个非常强大的工具,它允许我们在SQL语句中进行条件判断,根据不同的条件返回不同的结果。在MySQL中,我们可以利用`CASE WHEN`来实现自定义排序,以满足特定的业务需求。以下是一个关于如何在MySQL...

    Oracle sql文总结(case when,查看执行计画,文本操作,查看锁表及解锁,游标)

    在Oracle SQL中,有几个关键概念和技术值得深入理解,包括CASE WHEN语句、查看执行计划、文本操作、锁定和解锁表以及游标。以下是对这些知识点的详细解释: 1. **CASE WHEN语句**: CASE WHEN是SQL中的一个条件...

    SQL学习六-CASE WHEN

    SQL学习六-CASE WHEN

Global site tag (gtag.js) - Google Analytics