SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-3 CASE表达式
● 虽然CASE表达式中的ELSE子句可以省略,但为了让SQL语句更加容易理解,还是希望大家不要省略。 
● CASE表达式中的END不能省略。 
● 使用CASE表达式能够将SELECT语句的结果进行组合。
什么是CASE表达式 
CASE 表达式是在区分情况时使用的,这种情况的区分在编程中通常称为(条件)分支。
CASE表达式的语法 
下面就让我们赶快来学习一下搜索 CASE 表达式的语法吧。 
CASE表达式的使用方法 
 
ELSE 子句也可以省略不写,这时会被默认为 ELSE NULL。但为了防止有人漏读,还是希望大家能够显示地写出 ELSE 子句。

--MySQL
-- MySQL中使用IF代替CASE表达式
SELECT product_name,
IF( IF( IF(product_type = '衣服', CONCAT('A:', product_type), NULL)
IS NULL AND product_type = '办公用品', CONCAT('B:', product_type),
IF(product_type = '衣服', CONCAT('A:', product_type), NULL))
IS NULL AND product_type = '厨房用具', CONCAT('C:', product_type),
IF( IF(product_type = '衣服', CONCAT('A:', product_type), NULL)
IS NULL AND product_type = '办公用品', CONCAT('B:', product_type),
IF(product_type = '衣服', CONCAT('A:', product_type), NULL))) AS abc_product_type
FROM Product;
■ CASE表达式的书写位置 
 

SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-3 CASE表达式的更多相关文章
- 推荐《SQL基础教程(第2版)》中文PDF+源代码+习题答案
		
我认为<SQL基础教程(第2版)>非常适合数据库学习的初学者.论述的角度是读者的角度,会换位思考到读者在看到这一段时候会发出怎样的疑问,非常难得:原始数据的例题只有一道,但是可以反复从不同 ...
 - 笔记-Python基础教程(第二版)第一章
		
第一章 快速改造:基础知识 01:整除.乘方 (Python3.0之前 如2.7版本) >>> 1/2 ==>0 1/2整除,普通除法: 解决办法1: 1.0/2.0 ==& ...
 - [SQL基础教程] 4-3 数据的更新(UPDATE)
		
[SQL基础教程] C4 数据更新 4-3 数据的更新(UPDATE) UPDATE UPDATE <表名> SET <列名> = <表达式>; UPDATE &l ...
 - [SQL基础教程] 3-1 对表进行聚合查询
		
[SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...
 - SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)
		
SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...
 - [SQL基础教程] 5-1视图
		
[SQL基础教程] 5-1视图 视图和表 从SQL角度看视图就是一张表 视图与表的差别 表保存了实际的数据,视图保存的是SELECT语句: 视图的优点 节省存储空间: 将常用的Select 语句保存成 ...
 - [SQL基础教程] 4-4 事务
		
[SQL基础教程] 4 数据更新 4-4 事务 事务 需要在同一处理单元中执行的一系列更新处理的集合 创建事务 事务开始语句; DML语句1; DML语句2; . . . 事务结束语句; 事务开始语句 ...
 - [SQL基础教程] 4-2 数据删除(DELETE)
		
[SQL基础教程] C4 数据更新 4-2 数据删除(DELETE) DROP TABLE / DELETE DROP TABLE - 完全删除表 DELETE - 仅删除数据,保留表容器 DELET ...
 - [SQL基础教程] 4-1 数据的插入(INSERT)
		
[SQL基础教程] C4 数据更新 4-1 数据的插入(INSERT) INSERT INSERT INTO <表名>(列1,列2...) VALUES(值1,值2...); 清单 用() ...
 - [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
		
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...
 
随机推荐
- Oracle 中启用 scott 用户 的方法
			
解锁scott: SQL> alter user scott account unlock 修改密码: SQL> alter user scott identified by tiger ...
 - QEMU 配置网络
			
背景 为了 实现 uboot 中连接上 QEMU-host 的网络. 非常奇怪,本人的 系统中 存在/dev/net/tun驱动,但是 lsmod | grep tun 却没有任何结果,所以实际上,这 ...
 - 解决Elasticsearch索引只读
			
今天添加索引时发现kibana添加索引不生效,页面也没有报错,没有创建成功只是一闪而过. 另外发现各项目日志与当前时间差异很大,filebeat一直报错io timeout 具体报错如下: fileb ...
 - mapper语句的一些问题,union连表查询和mapper中根据条件不同采用不同语句的查询问题
			
根据业务要求,不同表查出来的内容天需要一起展示出来,并且还有分页之类的,不同表查询字段也不完全相同,这样就有一个问题,不同表如何接合在一起,不同字段怎么办? 这个问题就需要用到union联合查询,并将 ...
 - node - 获取当前时间并格式化
			
1,安装 moment模块 cnpm i moment --save 2,引入 var moment = require('moment'); 3,获取当前时间并格式化 var current_tim ...
 - 十八、SAP中使用IF/ELSE判断语句,以及sy-subrc的用法
			
一.sy_subrc为上一条语句的执行结果,如果为0,则表示执行成功. 需要注意的是,IF ELSE语句,每一个关键字都需要带句号 二.执行效果如下 相关代码如下 *&------------ ...
 - 115-PHP实例化和不实例化输出类常量
			
<?php class boy{ //定义男孩类 const sex='男'; public $age=15; } echo '不实例化对象输出类常量:'.boy::sex; $boy=new ...
 - CF1141E Superhero Battle
			
A superhero fights with a monster. The battle consists of rounds, each of which lasts exactly n minu ...
 - springboot - 使用ErrorAttributes 在我们自定义的 ErrorController中
			
1.概览 基于<springboot - 映射 /error 到自定义且实现了ErrorController的Controller>改造,仅将MyCustomErrorController ...
 - UVA - 714 Copying Books (抄书)(二分+贪心)
			
题意:把一个包含m个正整数的序列划分成k个(1<=k<=m<=500)非空的连续子序列,使得每个正整数恰好属于一个序列(所有的序列不重叠,且每个正整数都要有所属序列).设第i个序列的 ...