`
nakupanda
  • 浏览: 416851 次
  • 性别: 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与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。这通常可以通过下载并运行...

    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 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. ...

    MySQL常用基础语法.docx

    MySQL 是一种关系型数据库管理系统,广泛应用于 Web 应用程序中。以下是 MySQL 的一些常用基础语法。 启动和关闭 * 启动 MySQL 服务:net start mysql * 关闭 MySQL 服务:net stop mysql * 登录 MySQL:mysql -u...

    mysql5.1中文手册

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

    PHP与MySQL程序设计 Beginning PHP and MySQL Third Edition 源码

    在《Beginning PHP and MySQL Third Edition》中,作者深入浅出地介绍了如何使用PHP和MySQL进行程序设计,内容涵盖了基础概念、语法、数据类型、操作符、流程控制、函数、面向对象编程、错误处理、数据库设计、SQL...

Global site tag (gtag.js) - Google Analytics