Oracle中case when函数的用法

一、case when 的基本用法见:

PL/SQL 使用控制流程

二、case when在select语句中的用法

SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1   ELSE NULL   END) 男生数,
              COUNT (CASE WHEN sex = 2 THEN 1   ELSE NULL   END) 女生数
FROM students
GROUP BY grade;

1、在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等。

Case函数不同于DECODE函数。在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而 实现更多的功能。

SELECT keyCol, CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B )  THEN 'Matched' ELSE 'Unmatched' END Label
FROM tbl_A;

也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。

2、根据条件有选择的UPDATE。

UPDATE PersonnelSET salary =
CASE WHEN salary >= 5000                   THEN salary * 0.9
     WHEN salary >= 2000 AND salary < 4600  THEN salary * 1.15
ELSE salary END;

三、case when在where语句中的用法

SELECT * FROM   TB_Test
WHERE  stateid IN ( 10, 20 )
       AND ( CASE  WHEN stateid = 20 AND userid <> 2 THEN 0
                   ELSE 1
              END ) = 1

四、case when在group by 语句中的用法(不常用)

SELECT
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600  THEN '2'
WHEN salary > 600 AND salary <= 800  THEN '3'
ELSE NULL END salary_class, -- 别名命名
COUNT(*)  FROM    Table_A
GROUP BY
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600  THEN '2'
WHEN salary > 600 AND salary <= 800  THEN '3'
ELSE NULL END;

到此这篇关于Oracle中case when函数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Oracle中PL/SQL复合数据类型

    一.PL/SQL记录:一条记录 可简化单行多列的数据的处理.当使用pl/sql记录时,应用开发人员即可以自定义记录类型和记录变量,也可以使用%rowtype属性直接定义记录变量. 1.当使用自定义的pl/sql记录时,需要分别定义pl/sql记录类型和记录变量. declare type emp_record_type is record( name emp.ename%type,salary emp.sal%type ); emp_record emp_record_type; begin s

  • Oracle中的函数详解

    目录 一.数值函数 二.字符函数 三.日期时间函数 四.转换函数 五.辅助函数 六.聚合函数 七.分析函数 一.数值函数 1.mod(n1,n2):n1除以n2的余数. 如果n2为0,则返回n1. select mod(23,8),mod(24,8) from dual;--返回:7,0 2.power(n1,n2):返回数字n1的n2次幂; exp(y):返回e的y次幂.(e为数学常量); log(x,y):返回以x为底的y的对数: ln(y):返回e为底的自然对数. select power

  • 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' THEN '女'  ELSE '其他' END 2. CASE WHEN 在语句中不同位置的用法2.1 SELECT CASE WHEN 用法 复制代码 代码如下: SEL

  • Oracle用decode函数或CASE-WHEN实现自定义排序

    1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序.但排序规则是默认的,数字.时间.字符串等都有自己默认的排序规则.有时候需要按自己的想法来排序,而不是按字段默认排序规则. 比如字段值为英文字段:Monday.Tuesday.Wednesday等,如果按字段默认排序规则就为: Friday Monday Saturday Sunday Thursday Tuesday Wednesday 实际我需要的是: Monday Tuesday W

  • Oracle中的分析函数汇总

    一.概述 OLAP的系统(即Online Aanalyse Process)一般用于系统决策使用.通常和数据仓库.数据分析.数据挖掘等概念联系在一起.这些系统的特点是数据量大,对实时响应的要求不高或者根本不关注这方面的要求,以查询.统计操作为主. 我们来看看下面的几个典型例子: ①查找上一年度各个销售区域排名前10的员工 ②按区域查找上一年度订单总额占区域订单总额20%以上的客户 ③查找上一年度销售最差的部门所在的区域 ④查找上一年度销售最好和最差的产品 我们看看上面的几个例子就可以感觉到这几个

  • Oracle中case when函数的用法

    一.case when 的基本用法见: PL/SQL 使用控制流程 二.case when在select语句中的用法 SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 ELSE NULL END) 男生数, COUNT (CASE WHEN sex = 2 THEN 1 ELSE NULL END) 女生数 FROM students GROUP BY grade; 1.在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXIST

  • Oracle中的translate函数和replace函数的用法详解

    translate函数语法: translate(expr, from_strimg, to_string) 简介: translate返回expr,其中from_string中的每个字符的所有出现都被to_string中的相应字符替换.expr中不在from_string中的字符不会被替换.如果expr是一个字符串,那么你必须把它放在单引号中. from_string的参数可以包含比to_string更多的字符.在这种情况下,from_string末尾的多余字符在to_string中没有对应的

  • Oracle中ROW_NUMBER()OVER()函数用法实例讲解

    目录 1. 说明: 2. 原理: 3.语法: 4.示例一: 5. 示例二 总结 Oracle中ROW_NUMBER() OVER()函数用法 1. 说明: ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,over() 里的分组以及排序的执行晚于 where.group by.order by 的执行. 3.语法: row_number() over( partition by 分组列 order by 排序列 desc )

  • oracle中的trim函数使用介绍

    Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数有更深的认识. 如果提到Oracle TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种. 然而Oracle TRIM函数其实是具有删除"任意指定"字符的功能,不可谓不牛.我们来一次体验之旅. 1.先看一下Oracle TRIM函数的完整语法描述 TRIM([ { { LEADING | TRAI

  • oracle中的greatest 函数和 least函数示例代码

    greatest (max(one),max(two),max(three)) 求多列的最大值,oracle中的greatest 函数 已知表TB的数据如下 SQL> select * from tb; ID CHINESE MATH ENGLISH ---------- ---------- ---------- ---------- 1001 89 98 87 1002 81 87 79 现在要得到如下的结果,该怎么来解决 ID CHINESE MATH ENGLISH MAX MIN --

  • php中正则替换函数ereg_replace用法实例

    本文实例讲述了php中正则替换函数ereg_replace用法.分享给大家供大家参考.具体如下: 下面的实例是利用php 正则替换函数 ereg_replace来把指定的字符替换成我想需要的字符实例,代码如下: 复制代码 代码如下: $num = 'www.jb51.net'; $string = "this string has four words. <br>"; $string = ereg_replace ('four', $num, $string); echo

  • SQL中Charindex和Oracle中对应的函数Instr对比

    sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) >0 instr(MUserID,'administrator',1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识. Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: Instr(string, su

  • JavaScript中字符串分割函数split用法实例

    本文实例讲述了JavaScript中字符串分割函数split用法.分享给大家供大家参考.具体如下: 先来看下面这段代码: <script type="text/javascript"> var str="How are you doing today?" document.write(str.split(" ") + "<br />") document.write(str.split("&q

  • ES6中Array.includes()函数的用法

    在ES5,Array已经提供了indexOf用来查找某个元素的位置,如果不存在就返回-1,但是这个函数在判断数组是否包含某个元素时有两个小不足,第一个是它会返回-1和元素的位置来表示是否包含,在定位方面是没问题,就是不够语义化.另一个问题是不能判断是否有NaN的元素. const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN] console.log('%s', arr1.indexOf(NaN)) 结果:

  • python中去空格函数的用法

    本文简单介绍了Python中去空格函数的用法,这是一个很实用的函数,希望对大家的Python程序设计有所帮助.具体分析如下: 在Python中字符串处理函数里有三个去空格的函数: strip 同时去掉左右两边的空格 lstrip 去掉左边的空格 rstrip 去掉右边的空格 具体示例如下: >>>a=" gho stwwl " >>>a.lstrip() 'gho stwwl ' >>>a.rstrip() ' gho stwwl'

随机推荐