`
nakupanda
  • 浏览: 418513 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

MYSQL中的流程控制语法

阅读更多
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。


mysql> SELECT CASE 1 WHEN 1 THEN 'one'

->    WHEN 2 THEN 'two' ELSE 'more' END;

    -> 'one'

mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

    -> 'true'

mysql> SELECT CASE BINARY 'B'

->    WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;

    -> NULL

一个CASE表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在语境而定。如果用在字符串语境中,则返回结果味字符串。如果用在数字语境中,则返回结果为十进制值、实值或整数值。 



IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

mysql> SELECT IF(1>2,2,3);

    -> 3

mysql> SELECT IF(1<2,'yes ','no');

    -> 'yes'

mysql> SELECT IF(STRCMP('test','test1'),'no','yes');

    -> 'no'

如果expr2 或expr3中只有一个明确是 NULL,则IF() 函数的结果类型 为非NULL表达式的结果类型。

expr1 作为一个整数值进行计算,就是说,假如你正在验证浮点值或字符串值,  那么应该使用比较运算进行检验。

mysql> SELECT IF(0.1,1,0);

    -> 0

mysql> SELECT IF(0.1<>0,1,0);

    -> 1

在所示的第一个例子中,IF(0.1)的返回值为0,原因是 0.1 被转化为整数值,从而引起一个对 IF(0)的检验。这或许不是你想要的情况。在第二个例子中,比较检验了原始浮点值,目的是为了了解是否其为非零值。比较结果使用整数。

IF() (这一点在其被储存到临时表时很重要 ) 的默认返回值类型按照以下方式计算:

表达式
返回值

expr2 或expr3 返回值为一个字符串。
字符串

expr2 或expr3 返回值为一个浮点值。
浮点

expr2 或 expr3 返回值为一个整数。 
整数


假如expr2 和expr3 都是字符串,且其中任何一个字符串区分大小写,则返回结果是区分大小写。

IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

mysql> SELECT IFNULL(1,0);

    -> 1

mysql> SELECT IFNULL(NULL,10);

    -> 10

mysql> SELECT IFNULL(1/0,10);

    -> 10

mysql> SELECT IFNULL(1/0,'yes');

    -> 'yes'

IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。假设一个基于表达式的表的情况,  或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:

CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;

在这个例子中,测试列的类型为 CHAR(4)。

NULLIF(expr1,expr2)
如果expr1 = expr2  成立,那么返回值为NULL,否则返回值为 expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

mysql> SELECT NULLIF(1,1);

    -> NULL

mysql> SELECT NULLIF(1,2);

    -> 1
分享到:
评论

相关推荐

    mysql语法手册-mysql语法手册-mysql语法手册-mysql语法手册

    MySQL提供了用户管理和权限控制功能。手册会解释GRANT和REVOKE语句,以及如何管理用户账户和权限。 九、备份与恢复 MySQL提供了mysqldump工具进行数据库备份,以及mysql命令行工具进行恢复。手册会指导如何进行这些...

    MySql的基本语法

    MySQL存储过程中还支持多种流程控制结构,使得你可以编写更复杂的逻辑。 - **顺序结构**: 最简单的流程控制结构,按照定义的顺序执行。 - **分支结构**: - `IF` 语句 - `CASE` 语句 - **循环结构**: - `...

    mysql 的窗口控制程序

    这时,"MySQL的窗口控制程序",如"mysqlcc"就显得尤为重要。mysqlcc是一款专为MySQL设计的图形用户界面工具,它提供了一个直观且用户友好的窗口,使得数据库管理、查询执行和数据可视化变得更加容易。 在mysqlcc中...

    mysql高级语法教学

    MySQL提供了自定义函数的能力,比如创建用户定义的变量、游标和条件控制流程。 4. **触发器** 触发器是一种在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL语句集合,可以用来实现业务规则的...

    MYSQL语法参考手册参考大全

    在SQL语法中,我们学习如何创建、修改和删除数据表,以及如何检索、更新和删除数据。 二、数据类型 MySQL提供了多种数据类型,包括数值类型(如INT、FLOAT、DECIMAL)、字符串类型(如VARCHAR、TEXT)、日期和时间...

    MySQL数据库:流程控制语句while语句.pptx

    流程控制语句WHILE循环语句 课程目标 1)理解 —— WHILE循环语句的语法规则 2)掌握 —— WHILE循环语句的使用方法 WHILE循环语句 MySQL支持3条用来创建循环的语句:WHILE、REPEAT和LOOP语句。 WHILE语句语法格式为...

    MySql中流程控制函数/统计函数/分组查询用法解析

    MySQL中的流程控制主要包括`IF`函数和`CASE`函数。 ### 1.1 IF函数 `IF`函数类似于编程语言中的三元运算符,根据条件表达式的真假返回不同的结果。例如: ```sql -- 如果10大于5,则返回'大',否则返回'小' ...

    MySQL_流程控制结构.

    在这个语法中,case_expr表示一个表达式,根据该表达式的结果与各个when子句中的value进行匹配,如果找到匹配则返回对应的result,并结束case结构。如果没有匹配的when子句,则返回else部分的结果。这种形式的case...

    mysql与sqlserver的基础语法区别

    - MySQL和SQL Server都支持存储过程,但SQL Server的存储过程功能更为强大,可以包含控制流程语句。 3. 触发器: - 两者都支持触发器,但SQL Server的触发器支持更复杂的逻辑和嵌套。 4. 视图索引: - SQL ...

    MySql与SQL语法比较

    - MySQL 的存储过程和函数在语法上与 SQL Server 有些不同,例如变量声明、流程控制结构(如 `CASE`、`WHILE`)和参数传递方式。 - MySQL 支持用户自定义函数(UDF),可以使用 C 编写并编译成库,而 SQL Server ...

    MySQL数据库:流程控制语句loop.pptx

    流程控制语句LOOP语句 课程目标 1)理解 —— LOOP语句的语法规则; 2)掌握 ——LOOP语句的使用方法; LOOP语句 LOOP语句语法格式如下: [begin_label:] LOOP statement_list END LOOP [end_label] 说明:LOOP允许...

    MySQL 5.1中文手冊

    12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历? 12.7. 全文搜索功能 12.7.1. 布尔全文搜索 ...

    MySQL基础语法与练习

    在这个“MySQL基础语法与练习”的主题中,我们将深入探讨MySQL的基础语法,并通过大量的练习来巩固你的理解。 一、MySQL安装与配置 在开始学习MySQL之前,你需要在你的计算机上安装MySQL。这通常可以通过下载并运行...

    PHP与MySQL程序设计 第四版.pdf

    在第四版中,作者将详细介绍PHP的基础语法,包括变量、数据类型、流程控制结构、函数、数组、类与对象等核心概念。此外,还将涵盖错误处理、异常处理、文件系统操作以及会话控制等高级主题,使读者能全面掌握PHP的...

    mysql官方中文参考手册

    12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历? 12.7. 全文搜索功能 12.7.1. 布尔全文搜索 ...

    Mysql 5.1 中文手册

    9. **程序接口**:MySQL提供了多种编程语言的API,如ODBC、JDBC、PHP和Python,这部分会介绍如何在这些语言中连接和操作MySQL数据库。 10. **附录和参考**:包含各种系统变量、函数、错误代码和配置选项的详细列表...

    MySQL_5.5 中文参考手册.pdf

    MySQL支持标准的SQL语法,包括数据查询语言(DQL)、数据操作语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。用户可以通过SELECT语句查询数据,INSERT、UPDATE和DELETE语句进行数据修改,CREATE、ALTER和...

    MySQL中文参考手册.chm

    11 MySQL 基准套件 12 MySQL 实用程序 12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 ...

    MYSQL入门学习 及常用的控制语句

    总的来说,MySQL的入门学习涉及安装、启动服务、使用命令行工具以及基本的SQL语法。随着对MySQL的深入理解和实践,你将能够创建复杂的数据库结构,执行高效的查询,并管理用户权限,为你的Web应用程序提供稳定的数据...

    MySQL 5.1官方简体中文参考手册

    12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 10/24 页)2006-11-02 19:12:13 MySQL 5.1 Reference Manual 12.4. 数值函数 12.4.1. ...

Global site tag (gtag.js) - Google Analytics