MYSQL中case when语法的作用

严格来讲,不应该叫“mysql条件判断语句case when语法”的,它的专业语术是:“mysql流程控制语句case语法”;这一点对于做程序的人来说一定要清楚。

CASE语法:

SQL

CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
或
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE

CASE存储程序 的语句实现了一个复杂的条件结构。

注意:也有一个表达,这不同于这里描述的 陈述。该 声明不能有一个 条款,而是终止 而不是。 CASE CASE CASEELSE NULLEND CASEEND

CASE语法说明:

对于第一个语法,case_value是一个表达式。将该值与when_value每个WHEN子句中的表达式进行 比较, 直到其中一个相等。当when_value找到平等时,相应的THEN子句 statement_list执行。如果不 when_value相等,则该 ELSE子句 statement_list执行,如果有的话。

这个语法不能用于测试是否相等, NULL因为NULL = NULL 是错误的。

对于第二种语法,将对每个WHEN子句 search_condition表达式进行求值,直到其中一个为真,此时它的对应 THEN子句将 statement_list执行。如果不 search_condition相等,则该 ELSE子句 statement_list执行,如果有的话。

如果否when_value或 search_condition匹配测试的值,并且CASE语句不包含任何ELSE子句,则CASE语句错误结果将找不到Case。

每个statement_list由一个或多个SQL语句组成; 一个空的 statement_list是不允许的。

CASE代码示例:

1、要处理没有任何值与任何WHEN子句匹配的情况 ,请使用ELSE 包含空白 BEGIN ... END块的情况,如下所示。

DELIMITER |
CREATE PROCEDURE p()
BEGIN
DECLARE v INT DEFAULT 1;
CASE v
WHEN 2 THEN SELECT v;
WHEN 3 THEN SELECT 0;
ELSE
BEGIN
END;
END CASE;
END;
|

2、sql语句查询时给某个空字段赋值

SELECT
CASE
WHEN field= '' THEN
'1'
WHEN field IS NULL THEN
'1'
ELSE
field
END
FROM
tablename

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)/ ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY CO

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法      今天在使用多字段去重时,由于某些字段有多种可...

2543
来自专栏熊二哥

那些年我们写过的T-SQL(上篇)

在当今这个多种不同数据库混用,各种不同语言不同框架融合的年代(一切为了降低成本并高效的提供服务),知识点多如牛毛。虽然大部分SQL脚本可以使用标准SQL来写,但...

19710
来自专栏Jackson0714

【T-SQL基础】02.联接查询

3879
来自专栏Hongten

hadoop2-HBase的Java API操作

Hbase提供了丰富的Java API,以及线程池操作,下面我用线程池来展示一下使用Java API操作Hbase。

1202
来自专栏小狼的世界

Mysql中的条件语句if、case

Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表。

1532
来自专栏乐沙弥的世界

PL/SQL --> 动态SQL调用包中函数或过程

      动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句。最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符...

872
来自专栏me的随笔

T-SQL基础(一)之简单查询

SQL: Structured Query Language,结构化查询语言,是一种在关系型数据库中用于管理数据的标准语言。SQL是一种声明式编程语言,即只需表...

1812
来自专栏文渊之博

参数化(二):执行查询的方式

前面一篇我介绍了执行计划缓存以及执行之前批处理经过的流程。这篇将用几个最普通的例子介绍查询的几种执行方式。 请看下面这个我使用的这个查询: SELECT Id...

1758
来自专栏AhDung

【SQL】分配函数一枚[AllotToTable]

像这种分配法我估计在多种场景都有在用,它应该有个名堂的,只是我不知道,还请知道的猿友告知,谢谢。

1101
来自专栏battcn

MySQL - RANGE优化篇

对于单列索引,索引值区间可以方便地用WHERE语句中的相应范围条件表示。优化器在常量传播阶段,会将一些非常量值转换为常量。

1733

扫码关注云+社区