orcale Case when的用法

Oracle case when 详解 文章目录1 概述2 示例: when 执行顺序3 ORA-06592: 执行 CASE 语句时未找到 CASE 1 概述 1. case when:条件判断语句 (1) 相当于其它语言中的 if else (2) 部分情况下,等同于 decode() 2. case when 表达式用两种形式 -- 简单 case 函数,要求:when 对象的类型 和 case 对象的类型一致 -- 此时等同于 decode(sex, '1', '男', '2', '女') case sex 阅读详情

大家都知道Case when的用法,一旦满足了某一个WHEN ,则这一条数据就会退出CASE WHEN,而不再考虑其他CASE ,文章来详细的介绍了case when的用法并举例说明了。

Case when 的用法
–简单Case函数
简单CASE表达式,使用表达式确定返回值.
  语法: www.2cto.com
代码如下
  CASE search_expression
  WHEN expression1 THEN result1
  WHEN expression2 THEN result2
  …
  WHEN expressionN THEN resultN
  ELSE default_result

搜索CASE表达式,使用条件确定返回值.
  语法:
 
代码如下
 CASE
  WHEN condition1 THEN result1
  WHEN condistion2 THEN result2
  …
  WHEN condistionN THEN resultN
  ELSE default_result
  END
  例:
  select product_id,product_type_id,
  case
  when product_type_id=1 then ‘Book’
  when product_type_id=2 then ‘Video’
  when product_type_id=3 then ‘DVD’
  when product_type_id=4 then ‘CD’
  else ‘Magazine’ www.2cto.com
  end
  from products

这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

比如说,下面这段SQL,你永远无法得到“第二类”这个结果

代码如下

CASE WHEN col_1 IN ( ‘a’, ‘b’) THEN ‘第一类’
WHEN col_1 IN (‘a’) THEN ‘第二类’
ELSE’其他’ END

下面我们来看一下,使用Case函数都能做些什么事情。

一,已知数据按照另外一种方式进行分组,分析。

有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key)
国家(country) 人口(population)
中国 600
美国 100
加拿大 100
英国 200
法国 300
日本 250
德国 200
墨西哥 50
印度 250

根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。
洲 人口
亚洲 1100
北美洲 250
其他 700

想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。 www.2cto.com
如果使用Case函数,SQL代码如下

代码如下
SELECT SUM(population),
CASE country
WHEN ‘中国’ THEN ‘亚洲’
WHEN ‘印度’ THEN ‘亚洲’
WHEN ‘日本’ THEN ‘亚洲’
WHEN ‘美国’ THEN ‘北美洲’
WHEN ‘加拿大’ THEN ‘北美洲’
WHEN ‘墨西哥’ THEN ‘北美洲’
ELSE ‘其他’ END
FROM Table_A
GROUP BY CASE country
WHEN ‘中国’ THEN ‘亚洲’
WHEN ‘印度’ THEN ‘亚洲’
WHEN ‘日本’ THEN ‘亚洲’
WHEN ‘美国’ THEN ‘北美洲’
WHEN ‘加拿大’ THEN ‘北美洲’
WHEN ‘墨西哥’ THEN ‘北美洲’
ELSE ‘其他’ END;

同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下

代码如下
SELECT
CASE WHEN salary <= 500 THEN ‘1’
WHEN salary > 500 AND salary <= 600 THEN ‘2’
WHEN salary > 600 AND salary <= 800 THEN ‘3’
WHEN salary > 800 AND salary <= 1000 THEN ‘4’
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’
WHEN salary > 800 AND salary <= 1000 THEN ‘4’
ELSE NULL END; www.2cto.com

二,用一个SQL语句完成不同条件的分组。

有如下数据
国家(country) 性别(sex) 人口(population)
中国 1 340
中国 2 260
美国 1 45
美国 2 55
加拿大 1 51
加拿大 2 49
英国 1 40
英国 2 60

按照国家和性别进行分组,得出结果如下
国家 男 女
中国 340 260
美国 45 55
加拿大 51 49
英国 40 60

普通情况下,用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函数的强大。

三,在Check中使用Case函数。

在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。

下面我们来举个例子
公司A,这个公司有个规定,女职员的工资必须高于1000块。如果用Check和Case来表现的话,如下所示 www.2cto.com

代码如下
CONSTRAINT check_salary CHECK
( CASE WHEN sex = ‘2’
THEN CASE WHEN salary > 1000
THEN 1 ELSE 0 END
ELSE 0 END )

如果单纯使用Check,如下所示

代码如下
CONSTRAINT check_salary CHECK
( sex = ‘2’ AND salary > 1000 )

女职员的条件倒是符合了,男职员就无法输入了。
实例
代码如下
create table feng_test(id number, val varchar2(20);
insert into feng_test(id,val)values(1,‘abcde’);
insert into feng_test(id,val)values(2,‘abc’);
commit;
SQL>select * from feng_test;
id val

1 abcde
2 abc
SQL>select id
, case when val like ‘a%’ then ‘1’
when val like ‘abcd%’ then ‘2’
else ‘999’ www.2cto.com
end case
from feng_test;
id case

1 1
2 1
根据我自己的经验我倒觉得在使用case when这个很像asp case when以在php swicth case开发关语句的用法,只要有点基础知道我觉得在sql中的case when其实也很好理解。

Ubuntu开发环境配置——持续更新 本文简要介绍了Ubuntu下的开发环境配置流程和问题分析与解决,更多内容持续更新中。 阅读详情

相关推荐

常微分方程 (ODE) 和 随机微分方程 (SDE)

常微分方程(Ordinary Differential Equations, ODE)和随机微分方程(Stochastic Differential Equations, SDE)是数学中描述系统动态行为的重要工具。它们有一些相似之处,但在处理随机性方面存在显著差异。

weixin_39699362的博客 4384

Oracle中case when详解

Oracle中case when详解,包括使用格式、使用说明、样例展示。

实泽有之,无泽虚之 4万+

Ansys Zemax | 公差分析中的补偿器优化:如何提升系统良率?

本文深入探讨了在Ansys Zemax公差分析中如何有效设置与优化补偿器以提升系统良率。文章指出,补偿器是连接理想设计与现实生产的关键,通过模拟实际装配中的调整(如后焦距),能显著改善公差分析的“悲观”预测。详细介绍了补偿器的添加方法、多补偿器策略、评价函数设计以及通过灵敏度分析和蒙特卡洛档案优化补偿效果,旨在帮助光学工程师制定更符合生产实际的公差策略,从而有效提升产品良率。

weixin_28419039的博客 619

Oracle中Case When的用法

一、Case的两种表达式 1.1、简单的case表达式 SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 END FROM table1; 1.2、检索的cse表达式 SELECT CASE WHEN 条件1 THEN 条件1的結果 WHEN 条件2 THEN 条件2的結果 ELSE 条件1,2以外的结果 END FROM table1; 二、Case的不同用法 2.1、作为求个

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 4万+

【电磁场计算】磁偶极子在外磁场中的受力

最近在总结电磁场计算公式的时候发现,关于磁偶极子受力的计算公式,在不同文献中的说明有点出入,在此特地写一篇博客澄清一下。

sky4403的博客 7462

STM32 使用SYN6288语音模块

本篇文章带大家学习一下SYN6288语音模块,这个模块可以用于车载设备,语音电子书等众多产品当中,而且这个模块支持多种编码格式,GB2312,GBK等字符编码格式。SYN6288语音合成模块是一种语音合成设备,其可实现文字转语音功能,将输入的文字信息通过内部的处理和合成,输出相对应的语音信息。SYN6288模块具有语音合成质量高、输出音质好、使用方便等特点,因此广泛应用于语音播报、语音提示、语音识别、智能家居、智能家电、安防监控等领域。支持多语言:包括中文、英文、日文、韩文等多种语言。

m0_49476241的博客 2万+

Oracle的case函数

转载自:原文 case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数。 case函数的一般有两种用法:1.case expression when value1 then returnvalue1 when value2 then returnvalue2 when value3 then returnvalue3 else defaultvalue end

qq_41182402的博客 2万+

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无

amy_mhd的博客 65

Oracle中的CASE WHEN语句使用详解与实例

oracle case when 新手宝典

lxz458912769的博客 9019

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 550

【Matlab】多旋翼无人机视觉伺服跟踪控制程序

本文介绍了基于Matlab的多旋翼无人机视觉伺服跟踪控制程序开发方法。该系统采用视觉感知、坐标转换、伺服控制和仿真验证四个核心模块,通过HOG+SVM目标检测、Shi-Tomasi特征提取和PID双闭环控制算法实现动态目标跟踪。详细阐述了相机标定、目标检测、坐标转换及伺服控制等关键环节的Matlab实现代码,并进行了仿真验证。结果表明该系统在±0.1m的跟踪精度下可实现100Hz的实时处理,适用于室内外复杂场景。文章还提出了工程应用中的优化建议,为无人机视觉伺服系统的开发提供了完整的技术方案。

unber的博客 505

oracle case when 用法

--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END   2. CASE WHEN

mr_miaomiao的专栏 558

【WorkBuddy从入门到精通实战教程】实战案例 第 18 章 把投资分析(炒股)变成你的日常

投资本身就是一件高度信息密集、强结构化、又极度依赖判断的事:读不完的财报、理不清的行业、吵不停的多空。而整理碎片信息、拆解复杂材料、把思考过程摆到台面上,恰好是 AI 擅长的。 在一次完整的股票研究里,AI 到底能替你做掉哪些低质量的重复劳动,把精力还给判断本身。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 458

【Orcale】case when 使用方法

case when

a15529452019的博客 336

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

oracle 字符串分割函数 与 case when in 使用

1、 oracle 分割函数 oracle本身没有提供直接的分割函数,需要我们自定义一个: --创建类型 CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000); --创建函数 CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN str_split PIPELINED AS v_length

qq_30832781的博客 2794

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

orcale中decode与case when then的区别

 一、DECODE ( )语法:decode(expr,search1,result1,                              search2,result2,                              ……                              search n,result n, default)解释:decode函数将

u011564963的博客 860

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Oracle CASE WHEN 用法介绍

Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 复制代码 --简单Case函数   CASE sex   WHEN '1' THEN '男'   WHEN '2' THEN '女'   ELSE '其他' END   --Case搜索函数   CASE WHEN sex = '1' THEN '男'

shenxiuwen1989的专栏 479

oracle 视图 case when,案例:oracle中case when的用法

例子1、最近支持同事做报表,特提供数据源的sql脚本,当中就用到了case when。主要的视图结构如下:create or replace view v_card_channel_count5(icpcode,sumarea,count1201,count1202,count1203,count1204,count1205,count1206,count1207,count1208,count1...

weixin_33127399的博客 1048

oracle的case when写法学习

case when 语句可以在SQL语句中实现IF..ELSE 语法上有两种操作: 语法一: CASE EXPRESSION WHEN EXPRESSION1 THEN VAL1                 WHEN EXPRESSION2 THEN VAL2                 WHEN EXPRESSION3 THEN VAL3                 ..

maomaoduoer的专栏 983

orcale case when

select EID_TYPE_NAME, count(case when EID_TYPE_NAME = '中心' then 1 else null end) center_number, count(case when EID_TYPE_NAME = '整省' then 1 else null end) province_number, cou...

ChangKA的博客 275

orcale CASE WHEN THEN END

1.CASE WHEN THEN END SELECT CASE status WHEN ‘1’ THEN ‘哈哈哈’ WHEN ‘2’ THEN ‘嘿嘿嘿’ ELSE ‘呵呵’ END status FROM WF_AFFAIR // 如果stutas的值为1,则展示为哈哈哈,值为2展示为 嘿嘿嘿,否则展示为呵呵 此用法还可以再作判断是使用,以便先改变值后在进行判断 ...

weixin_42345642的博客 294

orcale--case when

Case具有两种格式。简单Case函数和Case搜索函数。  一、case基本语法   --简单Case函数 CASE sex      WHEN '1' THEN '男'      WHEN '2' THEN '女' ELSE '其他' END (注释:列名,这里是sex,如果放在case后,则显示在屏幕上的列名即为列名sex) --Case搜索函数 CASE     WHEN...

秋秋的博客 538

orcale 根据case when order by 排序

select * from report_total_user t where to_char(STATISTICS_DATE,'yyyy-MM-dd')='${STATISTICS_DATE}' order by t.PROVINCE_CODE, case when t.user_type='扶贫' then 0 when t.user_type='零售' then 1 ...

ChangKA的博客 710

Oracle SQL 嵌套CASE WHEN

尝试了一下,Oracle CASE WHEN 是可以支持嵌套使用的。 虽然看起来比较恶心,但是还是挺有用的。   select case when (1 = 1) then case when(2=3) then 'A' else 'K' ...

dacoolbaby的专栏 1492

orcale关键字的用法(个人总结)

1.exists(应用于条件) EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测 行 的存在。 NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。 例:select * from 表名 where exist...

qq_38665017的博客 473

ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN...

weixin_34194379的博客 100
上一篇: Java中的String,StringBuilder,StringBuffer三者的区别
下一篇: 三大主流框架的优缺点
buringHe
博客等级 码龄12年 3粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值