MySQL CASE表达式

一、MySQL为您提供了两种形式的CASE表达式。

1、CASE表达式的第一种形式:

CASE value
WHEN compare_value_1 THEN result_1
WHEN compare_value_2 THEN result_2
WHEN compare_value_3 THEN result_3
WHEN compare_value_4 THEN result_4
WHEN compare_value_5 THEN result_5
WHEN compare_value_6 THEN result_6
ELSE result END

如果value等于compare_value,例如compare_value_1compare_value_2等,则CASE表达式返回相应的结果,即result_1result_2。 如果值不与任何compare_value匹配,则CASE表达式将返回ELSE子句中指定的结果。

2、CASE表达式的第二种形式如下:

CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
WHEN condition_3 THEN result_3
WHEN condition_4 THEN result_4
WHEN condition_5 THEN result_5
WHEN condition_6 THEN result_6
ELSE result END

在第二种形式中,如果条件为True,则CASE表达式返回结果,如result_1result_2等。 如果所有条件都为false,则返回ELSE部分中的结果。如果省略ELSE部分,CASE表达式将返回NULL

3、CASE表达式返回的数据类型取决于使用它的上下文的结果。 例如,如果在字符串上下文中使用CASE表达式,则会以字符串形式返回结果。 如果在数值上下文中使用CASE表达式,则会以整数,小数或实数值的形式返回结果。

二、实际运用

1、例如:假设您要按状态对客户进行排序,如果状态为NULL,则要使用国家作为排序标准。要实现这一点,您可以使用第一种形式的CASE表达式如下:

SELECT
    customerName, state, country
FROM
    customers
ORDER BY (CASE
    WHEN state IS NULL THEN country
    ELSE state
END);

2、例如: 如果您希望通过按状态查看销售订单数量,例如发货订单数量,待发货订单等,则可以使用CASE表达式的第二种形式,如下所示:

SELECT
    SUM(CASE
        WHEN status = ‘Shipped‘ THEN 1
        ELSE 0
    END) AS ‘Shipped‘,
    SUM(CASE
        WHEN status = ‘On Hold‘ THEN 1
        ELSE 0
    END) AS ‘On Hold‘,
    SUM(CASE
        WHEN status = ‘In Process‘ THEN 1
        ELSE 0
    END) AS ‘In Process‘,
    SUM(CASE
        WHEN status = ‘Resolved‘ THEN 1
        ELSE 0
    END) AS ‘Resolved‘,
    SUM(CASE
        WHEN status = ‘Cancelled‘ THEN 1
        ELSE 0
    END) AS ‘Cancelled‘,
    SUM(CASE
        WHEN status = ‘Disputed‘ THEN 1
        ELSE 0
    END) AS ‘Disputed‘,
    COUNT(*) AS Total
FROM
    orders;

原文地址:https://www.cnblogs.com/yuezc/p/12198110.html

时间: 2024-10-14 19:04:18

MySQL CASE表达式的相关文章

SQL基础学习_05_函数、谓词、CASE表达式

函数 算术函数 1. 四则运算: +.-.*./? 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的位数) 字符串函数 1. 字符串拼接: ||, str1 || str2 || str3 || - || strn ?AS str_all 2. 字符串长度:LENGTH,LENGTH(str1) AS len_str1 3. 小写转换:LOWER,LOWER(str1) AS low_str 4.

[SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式

SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2.函数的种类: (1)算术函数 - 数值计算 (2)字符串函数 - 字符串操作 (3)日期函数 - 日期操作 (4)转换函数 - 转换数据类型 (5)聚合函数 - 数据聚合 3.算术函数(加.减.乘.除):+.-.*./ [备注]数据类型 NUMBERIC(全体位数,小数位数)可以指定数值的大小. C

SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-3 CASE表达式

● 虽然CASE表达式中的ELSE子句可以省略,但为了让SQL语句更加容易理解,还是希望大家不要省略. ● CASE表达式中的END不能省略. ● 使用CASE表达式能够将SELECT语句的结果进行组合. 什么是CASE表达式 CASE 表达式是在区分情况时使用的,这种情况的区分在编程中通常称为(条件)分支. CASE表达式的语法 下面就让我们赶快来学习一下搜索 CASE 表达式的语法吧. CASE表达式的使用方法  ELSE 子句也可以省略不写,这时会被默认为 ELSE NULL.但为了防止有

CASE 表达式

CASE 表达式是一个标量表达式,它基于条件逻辑来返回一个值.注意,CASE 是一个表达式,而不是一条语句:也就是说,不能用它来控制活动的流程,也不能根据条件逻辑来做某些处理.相反,它只是根据条件逻辑来返回某个值.因为CASE是一个标量表达式,所以它可以支持任何标量表达式(如SELECT.WHERE.HAVING,以及ORDER BY).CHECK 约束,等等. CASE 表达式有两种格式:简单表达式和搜索表达式.CASE简单格式将一个值(或一个标量表达式)与一组可能的取值进行比较,并返回第一个

case表达式用法

1.两种格式: case 表达式 when 表达式1 THEN 表达式1a [[when 表达式2  then 表达式2a][......]]       ------可以省略 [else 表达式N]     ------可以省略 END    ; case when 条件表达式1   then 表达式1 [[when 条件表达式2 then 表达式2][......]]  ------可以省略 [else 表达式n]  ------可以省略 end   ; 实例:当仓库号是WH1.WH2.WH

Ruby: Case表达式

Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第一个为真的条件表达式所对应的语句. 第二种形式,在case语句的顶部指定一个目标,而每个when从句列出一个或者多个比较条件 和if一样,case返回执行的最后一个表达式的值:而且如果表达式和条件在同一行上的话,可以用then关键字来加以区分.

case表达式详解

CASE 表达式 ---------格式一--------- CASE 条件表达式 WHEN 条件表达式结果1 THEN 语句段1 WHEN 条件表达式结果2 THEN 语句段2 ...... WHEN 条件表达式结果n THEN 语句段n [ELSE 条件表达式结果] END; ---------格式二--------- CASE WHEN 条件表达式1 THEN 语句段1 WHEN 条件表达式2 THEN 语句段2 ...... WHEN 条件表达式n THEN 语句段n [ELSE 语句段

SQLServer学习笔记<>日期和时间数据的处理(cast转化格式、日期截取、日期的加减)和 case表达式

日期和时间数据的处理. (1)字符串日期 ‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期.例如,查询订单表日期大于‘20080301’.可以这样写: 1 select * from sales.orders 2 where orderdate>'20080301' 结果如图所示: (2)cast进行转化.例如,可以讲‘20080301’转化为时间类型.其结果跟上图一样. 1 select * from sales.orders 2 where order

T-SQL的基础:超越基础6级:使用CASE表达式和IIF函数

                                                                                                                                                          T-SQL的基础:超越基础6级:使用CASE表达式和IIF函数