Mariadb MySQL逻辑条件判断相关语句、函数使用举例介绍
MySQL逻辑条件判断相关语句、函数使用举例介绍
By:授客 QQ:1033553122
1、 IFNULL函数介绍
IFNULL(expr1, expr2)
说明:假如expr1 不为NULL,则 IFNULL() 的返回值为expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
注意:默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。
例子:
SELECT IFNULL(1, 0); # 结果为1
SELECT IFNULL(NULL, 10); # 结果为 10
SELECT IFNULL(1/0, 10); # 结果为10.000
SELECT IFNULL('string', 1.5); # 结果为 string
SELECT IFNULL('string', 5); # 结果为 string
SELECT IFNULL(1.5, 5); # 结果为 1.5
2、 IF函数
IF(expr1, expr2, expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。
例子:
SELECT IF(1>2, 2, 3); # 结果返回 3
SELECT IF(1<2, 'yes', 'no'); # 结果返回yes
SELECT IF(NULL, 1, 3); # 结果返回3
SELECT IF(0.1,1,0); # 结果返回1
SELECT IF(0.1<>0,1,0); # 结果返回1
注意:IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)
3、 CASE WHEH的使用
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
说明:condition条件为真,则返回result。如果没有匹配的result值,那么结果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。
例子:
SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; # 结果返回 true
SELECT CASE WHEN 5 > 9 THEN "5 > 9:fasle" WHEN 5 > 6 THEN "5 > 6:fasle" WHEN 5 > 4 THEN "5 > 4:true" ELSE "false" END; # 结果返回 5 > 4:true
4、 IF…ELSE的使用
DELIMITER //
CREATE PROCEDURE sp_test(
flag INT
)
BEGIN
DECLARE num INT DEFAULT 0;
SET num = 1;
IF flag = 3
THEN
SET num = 2;
SELECT num;
ELSE
SET num = 3;
SELECT num;
END IF;
END;
//
DELIMITER ;
CALL sp_test(5); # 结果输出值: 3
类似的有IF…ENDIF;
5、 IF…ELSEIF…ELSE的使用
DELIMITER //
CREATE PROCEDURE sp_test(
flag INT
)
BEGIN
DECLARE num INT DEFAULT 0;
SET num = 1;
IF flag = 3
THEN
SET num = 2;
SELECT num;
ELSEIF flag = 0
THEN
SET num = 3;
SELECT num;
ELSE
SET num = 4;
SELECT num;
END IF;
END;
//
DELIMITER ;

注:前后记得用DELIMITER //
……//
DELIMITER;
不然直接运行以上创建存储过程的语句可能会报错,如下:
Query: SET
num = 1
Error Code:
1193
Unknown system variable 'num'
Mariadb MySQL逻辑条件判断相关语句、函数使用举例介绍的更多相关文章
- DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...
- 不使用比较和条件判断实现min函数的一种方法
不使用比较和条件判断实现min函数,参数为两个32位无符号int. 面试的时候遇到的题目,感觉很有意思. 搜了一下多数现有的解法都是仅有两种限制之一,即要么仅要求不能使用比较,要么仅要求不能使用条件判 ...
- SQL利用Case When Then多条件判断SQL 语句
http://www.cnblogs.com/kevin2013/archive/2010/07/02/1769682.html SQL利用Case When Then多条件判断SQL ,用于sele ...
- mysql中有条件的插入语句
今天在参加笔试的过程中,看到一道题,大概意思就是说,当满足了条件就执行插入语句,当时就蒙了,之前从来都没有考虑过满足条件才插入的情况,所以一直都是这样写的 insert into table_name ...
- shell编程(三)之条件判断(if语句)
练习:写一个脚本判断当前系统上是否有用户的默认shell为bash: 如果有,就显示有多少个这类用户:否则,就显示没有这类用户: #!/bin/bash # grep '\<bash$' /et ...
- MySQL的简单条件判断语句
在MySQL中条件判断语句常用于数据转换,基于现有数据创建新的数据列,使用场景还是比较多. 基础样式: CASE WHEN`条件`THEN`结果` ELSE`默认结果` END 在同一条判断语句中可以 ...
- shell条件判断与流程控制
一 条件判断式语句 1.按文件类型进行判断 测试类型 作用 -b 文件 判断文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断文件是否存在,并且是否为字符设备文件(是字符设备设备 ...
- Ansible 小手册系列 十四(条件判断和循环)
条件判断 When 语句 在when 后面使用Jinja2 表达式,结果为True则执行任务. tasks: - name: "shut down Debian flavored syste ...
- MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句
数据库介绍.MySQL安装.基础SQL语句 一.数据库介绍 1.什么是数据库 数据库即存储数据的仓库 2.为什么要用数据库 (1)用文件存储是和硬盘打交道,是IO操作,所以有效率问题 (2)管理不方便 ...
随机推荐
- C#递归方法遍历目录及子目录
众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对 ...
- 【Canal源码分析】重要类图
从Canal的整体架构中,我们可以看出,在Canal中,比较重要的一些领域有Parser.Sink.Store.MetaManager.CanalServer.CanalInstance.CanalC ...
- 记一次cocos项目的加载速度优化
半个月前,我们用cosos creator做了一个简单的小游戏,也许算不上小游戏吧..一边学cocos,一边做,几经波折后终于上线了.然鹅,功能是实现了,但是加载速度十分感人(毕竟没经验嘛,无辜脸). ...
- 企业域的冗余设计①:DHCP冗余设计(上)
在许多企业网络中,为了方便客户端IP地址的管理,通常采用的是自动获取的方式向DHCP服务器获得IP地址.为了保证DHCP服务器能够正常稳定地向客户端提供IP地址的租赁,DHCP服务器的冗余设计就显得格 ...
- Vue笔记:使用 VS Code 断点调试
直接在 Chrome 的调试窗口中调试 Vue 代码有诸多不便, 好在 Visual Studio Code 中提供了 Debugger for Chrome 插件,能够通过配置直接在 VS Code ...
- kafka主题管理
若代理设置了 auto.create.topics.enable=true,这样还未创建topic就往kafka发送消息时, 会自动创建一个 ${num.partitions}个分区和{default ...
- Python后端相关技术/工具栈
编辑器 最常见: vim / SublimeText2 / PyCharm Vim有兴趣可以看看 k-vim 适合Python/Golang开发 本地环境 pip/easy_install 包管理 v ...
- java concurrent 探秘
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...
- 从nsq中学习如何优雅的退出go 网络程序
退出运行中的程序,可以粗暴的kill -9 $PID,但这样会破坏业务的完整性,有可能一个正在在执行的逻辑半途而费,从而产生不正常的垃圾数据. 本文总结在go语言中,如何能优雅的退出网络应用,涉及的知 ...
- SQLite事务 SQLite插入多条语句为什么这么慢?.net (C#)
今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟!下面是他发给我的测试代码.我晕~~~~~~ using System.Data; ...