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提供了用户管理和权限控制功能。手册会解释GRANT和REVOKE语句,以及如何管理用户账户和权限。 九、备份与恢复 MySQL提供了mysqldump工具进行数据库备份,以及mysql命令行工具进行恢复。手册会指导如何进行这些...
MySQL存储过程中还支持多种流程控制结构,使得你可以编写更复杂的逻辑。 - **顺序结构**: 最简单的流程控制结构,按照定义的顺序执行。 - **分支结构**: - `IF` 语句 - `CASE` 语句 - **循环结构**: - `...
这时,"MySQL的窗口控制程序",如"mysqlcc"就显得尤为重要。mysqlcc是一款专为MySQL设计的图形用户界面工具,它提供了一个直观且用户友好的窗口,使得数据库管理、查询执行和数据可视化变得更加容易。 在mysqlcc中...
MySQL提供了自定义函数的能力,比如创建用户定义的变量、游标和条件控制流程。 4. **触发器** 触发器是一种在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL语句集合,可以用来实现业务规则的...
在SQL语法中,我们学习如何创建、修改和删除数据表,以及如何检索、更新和删除数据。 二、数据类型 MySQL提供了多种数据类型,包括数值类型(如INT、FLOAT、DECIMAL)、字符串类型(如VARCHAR、TEXT)、日期和时间...
流程控制语句WHILE循环语句 课程目标 1)理解 —— WHILE循环语句的语法规则 2)掌握 —— WHILE循环语句的使用方法 WHILE循环语句 MySQL支持3条用来创建循环的语句:WHILE、REPEAT和LOOP语句。 WHILE语句语法格式为...
MySQL中的流程控制主要包括`IF`函数和`CASE`函数。 ### 1.1 IF函数 `IF`函数类似于编程语言中的三元运算符,根据条件表达式的真假返回不同的结果。例如: ```sql -- 如果10大于5,则返回'大',否则返回'小' ...
- MySQL和SQL Server都支持存储过程,但SQL Server的存储过程功能更为强大,可以包含控制流程语句。 3. 触发器: - 两者都支持触发器,但SQL Server的触发器支持更复杂的逻辑和嵌套。 4. 视图索引: - SQL ...
- MySQL 的存储过程和函数在语法上与 SQL Server 有些不同,例如变量声明、流程控制结构(如 `CASE`、`WHILE`)和参数传递方式。 - MySQL 支持用户自定义函数(UDF),可以使用 C 编写并编译成库,而 SQL Server ...
流程控制语句LOOP语句 课程目标 1)理解 —— LOOP语句的语法规则; 2)掌握 ——LOOP语句的使用方法; LOOP语句 LOOP语句语法格式如下: [begin_label:] LOOP statement_list END LOOP [end_label] 说明:LOOP允许...
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。这通常可以通过下载并运行...
9. **程序接口**:MySQL提供了多种编程语言的API,如ODBC、JDBC、PHP和Python,这部分会介绍如何在这些语言中连接和操作MySQL数据库。 10. **附录和参考**:包含各种系统变量、函数、错误代码和配置选项的详细列表...
MySQL支持标准的SQL语法,包括数据查询语言(DQL)、数据操作语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。用户可以通过SELECT语句查询数据,INSERT、UPDATE和DELETE语句进行数据修改,CREATE、ALTER和...
11 MySQL 基准套件 12 MySQL 实用程序 12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 ...
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 是一种关系型数据库管理系统,广泛应用于 Web 应用程序中。以下是 MySQL 的一些常用基础语法。 启动和关闭 * 启动 MySQL 服务:net start mysql * 关闭 MySQL 服务:net stop mysql * 登录 MySQL:mysql -u...
控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历? 12.7. 全文搜索功能 ...
在《Beginning PHP and MySQL Third Edition》中,作者深入浅出地介绍了如何使用PHP和MySQL进行程序设计,内容涵盖了基础概念、语法、数据类型、操作符、流程控制、函数、面向对象编程、错误处理、数据库设计、SQL...