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逻辑条件判断相关语句、函数使用举例介绍的更多相关文章

  1. DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)

    这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...

  2. 不使用比较和条件判断实现min函数的一种方法

    不使用比较和条件判断实现min函数,参数为两个32位无符号int. 面试的时候遇到的题目,感觉很有意思. 搜了一下多数现有的解法都是仅有两种限制之一,即要么仅要求不能使用比较,要么仅要求不能使用条件判 ...

  3. SQL利用Case When Then多条件判断SQL 语句

    http://www.cnblogs.com/kevin2013/archive/2010/07/02/1769682.html SQL利用Case When Then多条件判断SQL ,用于sele ...

  4. mysql中有条件的插入语句

    今天在参加笔试的过程中,看到一道题,大概意思就是说,当满足了条件就执行插入语句,当时就蒙了,之前从来都没有考虑过满足条件才插入的情况,所以一直都是这样写的 insert into table_name ...

  5. shell编程(三)之条件判断(if语句)

    练习:写一个脚本判断当前系统上是否有用户的默认shell为bash: 如果有,就显示有多少个这类用户:否则,就显示没有这类用户: #!/bin/bash # grep '\<bash$' /et ...

  6. MySQL的简单条件判断语句

    在MySQL中条件判断语句常用于数据转换,基于现有数据创建新的数据列,使用场景还是比较多. 基础样式: CASE WHEN`条件`THEN`结果` ELSE`默认结果` END 在同一条判断语句中可以 ...

  7. shell条件判断与流程控制

    一 条件判断式语句 1.按文件类型进行判断 测试类型 作用 -b 文件 判断文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断文件是否存在,并且是否为字符设备文件(是字符设备设备 ...

  8. Ansible 小手册系列 十四(条件判断和循环)

    条件判断 When 语句 在when 后面使用Jinja2 表达式,结果为True则执行任务. tasks: - name: "shut down Debian flavored syste ...

  9. MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句

    数据库介绍.MySQL安装.基础SQL语句 一.数据库介绍 1.什么是数据库 数据库即存储数据的仓库 2.为什么要用数据库 (1)用文件存储是和硬盘打交道,是IO操作,所以有效率问题 (2)管理不方便 ...

随机推荐

  1. 57.storm拓扑结构调整

    几个概念 Topology(拓扑):Spout.Bolt组成的一个完整的流程结构: Stream Grouping:流分组.数据的分发方式: Spout:直译 水龙头,也就是 消息源 的意思: Bol ...

  2. 微信正式开放内测“小程序”,不开发APP的日子真的来了?

    关注,QQ群,微信应用号社区 511389428 微信正式开放内测“小程序”,不开发APP的日子真的来了? 明星公司 缪定纯 • 2016-09-22 09:05 讨论了很久的微信应用号终于来了,不过 ...

  3. vue 运行npm run dev报错

    npm run dev运行时报错,原因有很多. 一般用下面这种方法都能解决的. 最简单粗暴的方法: 1.删除依赖包node_modules 2.然后重新npm install就行了 (如果这步报错了, ...

  4. 05 - JavaSE之数组

    一维数组 java中的数组是引用类型,分配在堆空间上. 一维数组的声明方式: type var[]; type[] var; java中声明数组时不能指定其长度,如下,因为java中的数组是分配在堆空 ...

  5. springboot-33-使用maven打瘦包

    直接使用maven的插件打包的话, 打出来一个jar, 会非常大, 有时候在服务上传的时候会非常不方便, <plugin> <groupId>org.springframewo ...

  6. kafka 日志结构

    1.kafka日志结构 直接举例子: 例如kafka有个名字叫 haha 的topic,那么kafka日志下面有kafka-0,kafka-1,kafka-2...,kafka-n,具体多少个,创建分 ...

  7. 在Linux上进行内核参数调整

    在Solaris上,使用工具mdb就可以直接修改内核内存里的内容.而在Linux上,则通常使用命令sysctl(8)做类似的事情. 本文以Fedora为例,介绍如何在Linux上进行内核参数调整. 常 ...

  8. Linux cp 强制覆盖

     Linux下默认cp命令是有别名(alias cp='cp -i')的,无法强制覆盖,即使你用 -f 参数也无法强制覆盖文件,下面提供两种Linux下cp 覆盖方法. 1) 取消cp的alias,这 ...

  9. HashMap底层原理分析(put、get方法)

    1.HashMap底层原理分析(put.get方法) HashMap底层是通过数组加链表的结构来实现的.HashMap通过计算key的hashCode来计算hash值,只要hashCode一样,那ha ...

  10. js获取指定格式的时间字符串

    如下: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1- ...