MySQL 的CASE WHEN 语句使用说明

(1)mysql数据库中CASE WHEN语句。
case when语句,用于计算条件列表并返回多个可能结果表达式之一。
CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。  两种格式都支持可选的 ELSE 参数。
语法如下:
1)简单 CASE 函数:
  1. CASE input_expression
  2. WHEN when_expression THEN
  3. result_expression [...n ] [
  4. ELSE
  5. else_result_expression
  6. END
参数介绍:
input_expression 是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft SQL Server 表达式。
WHEN when_expression 使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。
占位符 ,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。
THEN result_expression  当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值 TRUE 时返回的表达式。
result expression 是任意有效的 SQL Server 表达式。
ELSE else_result_expression 当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。else_result_expression 是任意有效的 SQL Server 表达式。else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

简单 CASE 函数: 返回结果值介绍:

计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。
返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
2)CASE 搜索函数:
  1. CASE
  2. WHEN Boolean_expression THEN
  3. result_expression [...n ] [
  4. ELSE
  5. else_result_expression
  6. END

参数介绍:
WHEN Boolean_expression 使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。结果类型从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

CASE 搜索函数:返回结果值介绍:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。
如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

(2) MySQL case when例子介绍
1、 使用带有简单 CASE 函数的 SELECT 语句

在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其它比较。
  1. SELECT
  2. CASE parent_id
  3. WHEN 0 THEN
  4. '00'
  5. WHEN 1 THEN
  6. '11'
  7. ELSE
  8. 'OTHERS'
  9. END AS parent_id_new ,
  10. parent_id ,
  11. type_id ,
  12. type_name
  13. FROM
  14. tdb_goods_types


2、使用带有简单 CASE 函数和 CASE 搜索函数的SELECT 语句

在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。
  1. SELECT
  2. CASE
  3. WHEN parent_id < 3 THEN
  4. '<3'
  5. WHEN parent_id >= 3
  6. AND parent_id < 5 THEN
  7. '>=3 && <5'
  8. ELSE
  9. '>=5'
  10. END AS parent_id_new ,
  11. parent_id ,
  12. type_id ,
  13. type_name
  14. FROM
  15. tdb_goods_types


3、CASE 可能是 SQL 中被误用最多的关键字之一。

虽然,可能以前用过这个关键字来创建字段,但是它还具有更多用法。
例如,可以在 WHERE 子句中使用 CASE。或者在 GROUP BY 子句中使用 CASE
使用CASE WHEN进行字符串替换处理,稍加深入,还可以得到以前认为不可能得到的分组排序结果集。
  1. SELECT
  2. CASE
  3. WHEN parent_id < 3 THEN
  4. '<3'
  5. WHEN parent_id >= 3
  6. AND parent_id < 5 THEN
  7. '>=3 && <5'
  8. ELSE
  9. '>=5'
  10. END AS parent_id_new ,
  11. count(*) AS num_count ,
  12. parent_id ,
  13. type_id ,
  14. type_name
  15. FROM
  16. tdb_goods_types
  17. GROUP BY
  18. parent_id_new
  19. ORDER BY
  20. num_count


4、其他例子

%简单语句
  1. SELECT
  2. CASE
  3. WHEN 10 * 2 = 30 THEN
  4. '30 correct'
  5. WHEN 10 * 2 = 40 THEN
  6. '40 correct'
  7. ELSE
  8. 'Should be 10*2=20'
  9. END;

%多重语句
  1. SELECT
  2. CASE 10 * 2
  3. WHEN 20 THEN
  4. '20 correct'
  5. WHEN 30 THEN
  6. '30 correct'
  7. WHEN 40 THEN
  8. '40 correct'
  9. END;

%在SELECT查询中使用CASE WHEN
  1. SELECT
  2. CASE parent_id
  3. WHEN 0 THEN
  4. '00'
  5. WHEN 1 THEN
  6. '11'
  7. ELSE
  8. 'OTHERS'
  9. END AS parent_id_new ,
  10. parent_id ,
  11. type_id ,
  12. type_name
  13. FROM
  14. tdb_goods_types
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog. 
(1)mysql数据库中CASE WHEN语句。
case when语句,用于计算条件列表并返回多个可能结果表达式之一。
CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。  两种格式都支持可选的 ELSE 参数。
语法如下:
1)简单 CASE 函数:
  1. CASE input_expression
  2. WHEN when_expression THEN
  3. result_expression [...n ] [
  4. ELSE
  5. else_result_expression
  6. END
参数介绍:
input_expression 是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft SQL Server 表达式。
WHEN when_expression 使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。
占位符 ,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。
THEN result_expression  当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值 TRUE 时返回的表达式。
result expression 是任意有效的 SQL Server 表达式。
ELSE else_result_expression 当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。else_result_expression 是任意有效的 SQL Server 表达式。else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

简单 CASE 函数: 返回结果值介绍:

计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。
返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
2)CASE 搜索函数:
  1. CASE
  2. WHEN Boolean_expression THEN
  3. result_expression [...n ] [
  4. ELSE
  5. else_result_expression
  6. END

参数介绍:
WHEN Boolean_expression 使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。结果类型从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

CASE 搜索函数:返回结果值介绍:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。
如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

(2) MySQL case when例子介绍
1、 使用带有简单 CASE 函数的 SELECT 语句

在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其它比较。
  1. SELECT
  2. CASE parent_id
  3. WHEN 0 THEN
  4. '00'
  5. WHEN 1 THEN
  6. '11'
  7. ELSE
  8. 'OTHERS'
  9. END AS parent_id_new ,
  10. parent_id ,
  11. type_id ,
  12. type_name
  13. FROM
  14. tdb_goods_types


2、使用带有简单 CASE 函数和 CASE 搜索函数的SELECT 语句

在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。
  1. SELECT
  2. CASE
  3. WHEN parent_id < 3 THEN
  4. '<3'
  5. WHEN parent_id >= 3
  6. AND parent_id < 5 THEN
  7. '>=3 && <5'
  8. ELSE
  9. '>=5'
  10. END AS parent_id_new ,
  11. parent_id ,
  12. type_id ,
  13. type_name
  14. FROM
  15. tdb_goods_types


3、CASE 可能是 SQL 中被误用最多的关键字之一。

虽然,可能以前用过这个关键字来创建字段,但是它还具有更多用法。
例如,可以在 WHERE 子句中使用 CASE。或者在 GROUP BY 子句中使用 CASE
使用CASE WHEN进行字符串替换处理,稍加深入,还可以得到以前认为不可能得到的分组排序结果集。
  1. SELECT
  2. CASE
  3. WHEN parent_id < 3 THEN
  4. '<3'
  5. WHEN parent_id >= 3
  6. AND parent_id < 5 THEN
  7. '>=3 && <5'
  8. ELSE
  9. '>=5'
  10. END AS parent_id_new ,
  11. count(*) AS num_count ,
  12. parent_id ,
  13. type_id ,
  14. type_name
  15. FROM
  16. tdb_goods_types
  17. GROUP BY
  18. parent_id_new
  19. ORDER BY
  20. num_count


4、其他例子

%简单语句
  1. SELECT
  2. CASE
  3. WHEN 10 * 2 = 30 THEN
  4. '30 correct'
  5. WHEN 10 * 2 = 40 THEN
  6. '40 correct'
  7. ELSE
  8. 'Should be 10*2=20'
  9. END;

%多重语句
  1. SELECT
  2. CASE 10 * 2
  3. WHEN 20 THEN
  4. '20 correct'
  5. WHEN 30 THEN
  6. '30 correct'
  7. WHEN 40 THEN
  8. '40 correct'
  9. END;

%在SELECT查询中使用CASE WHEN
  1. SELECT
  2. CASE parent_id
  3. WHEN 0 THEN
  4. '00'
  5. WHEN 1 THEN
  6. '11'
  7. ELSE
  8. 'OTHERS'
  9. END AS parent_id_new ,
  10. parent_id ,
  11. type_id ,
  12. type_name
  13. FROM
  14. tdb_goods_types

猜你喜欢

转载自blog.csdn.net/m0_37846887/article/details/80872347
今日推荐