Oracle CASE WHEN 用法介绍

1. 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 在语句中不同位置的用法

2.1 SELECT CASE WHEN 用法

复制代码
SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;
复制代码

 

2.3 WHERE CASE WHEN 用法

复制代码
SELECT T2.*, T1.*
FROM T1, T2
WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
T1.SOME_TYPE LIKE 'NOTHING%'
THEN 1
WHEN T2.COMPARE_TYPE != 'A' AND
T1.SOME_TYPE NOT LIKE 'NOTHING%'
THEN 1
ELSE 0
END) = 1
复制代码

 

2.4 GROUP BY CASE WHEN 用法

复制代码
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;
复制代码

 

3.关于IF-THEN-ELSE的其他实现

3.1 DECODE() 函数

select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
from employees;

貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。

3.2 在WHERE中特殊实现

SELECT T2.*, T1.*
FROM T1, T2
WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')
OR
(T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')

这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。

 

如果您觉得文章有用,也可以给水发个微信小额红包鼓励鼓励!!!

转载于:https://www.cnblogs.com/soundcode/p/5549901.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 处理 Json(二):解码

golang 编码 json 还比较简单&#xff0c;而解析 json 则非常蛋疼。不像 PHP 一句 json_decode() 就能搞定。之前项目开发中&#xff0c;为了兼容不同客户端的需求&#xff0c;请求的 content-type 可以是 json&#xff0c;也可以是 www-x-urlencode。然后某天前端希望某个后端…

五、畸变矫正—让世界不在扭曲

五、畸变矫正—让世界不在扭曲 这篇博文所要讲述的内容&#xff0c;是标定的主要用途之一&#xff1a;矫正摄像机的畸变。对于图像畸变矫正的方法&#xff0c;张正友教授也在其大作“A Flexible New Technique forCamera Calibration”中给出。 玉米在这里先为大家介绍一下&…

第二阶段个人冲刺08

昨天做了什么&#xff1f; 解决新建项目时会遇到“Your android sdk is out of date or is missing templates”的问题&#xff0c;&#xff0c;实现学生交流区&#xff0c;只有学生和管理员有权查看&#xff0c;教师无权查看的功能 今天要做什么&#xff1f; 实现学生交流区&a…

HALCON示例程序distance_transform.hdev通过distance_transform检测线的缺陷

HALCON示例程序distance_transform.hdev通过distance_transform检测线的缺陷 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_close_window () dev_open_window (0, 0, 400, 400, ‘black’, WindowHandle)通过一系列的坐标点生成多边形像素轮廓 gen_re…

java面试-Java并发编程(二)——重排序

当我们写一个单线程程序时&#xff0c;总以为计算机会一行行地运行代码&#xff0c;然而事实并非如此。 什么是重排序&#xff1f; 重排序指的是编译器、处理器在不改变程序执行结果的前提下&#xff0c;重新排列指令的执行顺序&#xff0c;以达到最佳的运行效率。 重排序分类 …

《MySQL必知必会》[01] 基本查询

《MySQL必知必会》&#xff08;点击查看详情&#xff09;1、写在前面的话这本书是一本MySQL的经典入门书籍&#xff0c;小小的一本&#xff0c;也受到众多网友推荐。之前自己学习的时候是啃的清华大学出版社的计算机系列教材《数据库系统概论》&#xff0c;基础也算是半罐水&am…

(七)立体标定与立体校正 【计算机视觉学习笔记--双目视觉几何框架系列】

七、立体标定与立体校正 这篇博文中&#xff0c;让玉米和大家一起了解一下&#xff0c;张氏标定是怎样过渡到立体标定的&#xff1f;在这里主要以双目立体视觉进行分析。对于双目立体视觉&#xff0c;我们有两个摄像头。它们就像人的一双眼睛一样&#xff0c;从不同的方向看世界…

HALCON示例程序edge_segments.hdev提取连续的边缘段

HALCON示例程序edge_segments.hdev提取连续的边缘段 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image, ‘mreut’) get_image_size (Image, Width, Height) dev_open_window_fit_image (Image, 0, 0…

让 jQuery UI draggable 适配移动端

背景&#xff1a; 在移动端&#xff0c;本人要实现对某个元素的拖动&#xff0c;想到使用 jQuery UI 的 draggable 功能。但是发现此插件的拖动只支持PC端&#xff0c;不支持移动端。 原因&#xff1a; 原始的 jQuery UI 里&#xff0c;都是mousedown、mousemove、mouseup来描述…

LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块

限定某个目录禁止解析php防止***上传一个目录文件php&#xff0c;网站会从而解析php,对我们的网站有很大的危险。因此&#xff0c;我们需要在能上传文件的目录直接禁止解析PHP代码禁止步骤1.编辑虚拟主机配置文件&#xff1a;增添内容核心配置文件内容<Directory /data/wwwr…

编译器的功能是什么

1、编译器就是将“一种语言&#xff08;通常为高级语言&#xff09;”翻译为“另一种语言&#xff08;通常为低级语言&#xff09;”的程序。一个现代编译器的主要工作流程&#xff1a;源代码 (source code) → 预处理器(preprocessor) → 编译器 (compiler) → 目标代码 (obje…

八、走向三维

八、走向三维 我们前面花了七篇博文做铺垫&#xff0c;我们所做的一切努力都是为了最后的这一击——立体成像。因为玉米的这个系列文章是对双目视觉几何框架的总结。此处跳过匹配&#xff0c;假设左右图像点的完美匹配的。只看在几何上&#xff0c;三维坐标是如何被还原的。相对…

通用连接池项目开启

通用连接池项目开启 待完善......转载于:https://www.cnblogs.com/aresyl/p/5552092.html

HALCON示例程序fin.hdev通过形态学检测缺陷

HALCON示例程序fin.hdev通过形态学检测缺陷 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_window (‘off’) read_image (Fins, ‘fin’ [1:3]) get_image_size (Fins, Width, Height) dev_close_window () dev_open_window (0, 0, Width[0],…

FEZ前端模块化工程开发框架

FEZ FEZ 是面向前端模块化工程的开发框架。主要目的是统一前端开发模式和项目开发结构&#xff0c;自动化前端工作流&#xff0c;提高开发效率和开发质量。使用持续集成等软件工程的架构模式&#xff0c;集成众多业界先进的解决方案&#xff0c;让研发人员更专注于业务逻辑的实…

栈内存和堆内存

堆和栈这两个字我们已经接触多很多次&#xff0c;那么具体是什么存在栈中什么存在堆中呢&#xff1f;就拿JavaScript中的变量来说&#xff1a; 首先JavaScript中的变量分为基本类型和引用类型。 基本类型就是保存在栈内存中的简单数据段&#xff0c;而引用类型指的是那些保存在…

L~M方法

L~M方法&#xff1a; L~M&#xff08;Levenberg-Marquardt&#xff09;方法有些让人摸不清头脑。玉米觉得L~M让人困扰的主要原因有两点&#xff1a;一是L~M从何而来、二是L~M怎么样用&#xff1f;因为玉米也不是研究最优化理论的&#xff0c;所以玉米在这里用较为通俗的观点&a…

Android——Activity去除标题栏和状态栏

一、在代码中设置 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去除title requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉Activity上面的状态栏getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSC…

Ghosts for Tea

Ghosts for Tea 喝茶&#xff1f;闹鬼&#xff1f; Ten pence for a view over the bay . said the old man with the telescope. Lovely clearmorning. Have a look at the old lighthouse and the remains of the great shipwreckof 1935. “在如此可爱清爽的早晨&#xff0…

HALCON示例程序find_pads.hdev通过fit_rectangle2_contour_xld绘制精准轮廓

HALCON示例程序find_pads.hdev通过fit_rectangle2_contour_xld绘制精准轮廓 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_pc (‘off’) dev_update_window (‘off’) dev_update_var (‘off’) read_image (Image, ‘die_pads’) dev_close_w…