IF表达式

IF(expr1,expr2,expr3)

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

select *,if(sva=1,"男","女") as ssva from taname where sva != ""

作为表达式的if也可以用CASE when来实现:

select CASE sva WHEN 1 THEN '男' ELSE '女' END as ssva from taname where sva != ''

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

例如:

SELECT CASE 1 WHEN 1 THEN 'one'

WHEN 2 THEN 'two'

ELSE 'more' END

as testCol

将输出one

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。

IF ELSE 做为流程控制语句使用

if实现条件判断,满足不同条件执行不同的操作,这个我们只要学编程的都知道if的作用了,下面我们来看看mysql 存储过程中的if是如何使用的吧。

IF search_condition THEN

statement_list

[ELSEIF search_condition THEN]

statement_list ...

[ELSE

statement_list]

END IF

与PHP中的IF语句类似,当IF中条件search_condition成立时,执行THEN后的statement_list语句,否则判断ELSEIF中的条件,成立则执行其后的statement_list语句,否则继续判断其他分支。当所有分支的条件均不成立时,执行ELSE分支。search_condition是一个条件表达式,可以由“=、、>=、!=”等条件运算符组成,并且可以使用AND、OR、NOT对多个表达式进行组合。

例如,建立一个存储过程,该存储过程通过学生学号(student_no)和课程编号(course_no)查询其成绩(grade),返回成绩和成绩的等级,成绩大于90分的为A级,小于90分大于等于80分的为B级,小于80分大于等于70分的为C级,依次到E级。那么,创建存储过程的代码如下:

create procedure dbname.proc_getGrade

(stu_no varchar(20),cour_no varchar(10))

BEGIN

declare stu_grade float;

select grade into stu_grade from grade where student_no=stu_no and course_no=cour_no;

if stu_grade>=90 then

select stu_grade,'A';

elseif stu_grade<90 and stu_grade>=80 then

select stu_grade,'B';

elseif stu_grade<80 and stu_grade>=70 then

select stu_grade,'C';

elseif stu_grade70 and stu_grade>=60 then

select stu_grade,'D';

else

select stu_grade,'E';

end if;

END

注意:IF作为一条语句,在END IF后需要加上分号“;”以表示语句结束,其他语句如CASE、LOOP等也是相同的。

MySQL获取整数的函数CEIL(x)、CEILING(x)

CEIL(x)函数和CEILING(x)函数的意义相同,都用于返回大于或等于x的最小整数值,返回值转化为一个BIGINT。

实例:

使用CEIL(x)函数和CEILING(x)函数返回最小整数。SQL语句如下:

mysql>SELECT CEIL(0),CEIL(3.45),CEIL(-3.45),CEILING(3.45),CEILING(-3.45);

CEIL(x)函数和CEILING(x)函数的执行结果如下:

等于0的整数仍然为0,因此CEIL(0)的返回值为0;大于3.45的最小整数为4,因此返回值为4;-3.45是负数,大于-3.45的最小整数为-3,因此返回值为-3;

MySQL获取整数的函数FLOOR(x)

FLOOR(x)函数用于返回小于或等于x的最大整数值。

实例:

使用FLOOR(x)函数返回最大整数值。SQL语句如下:

mysql>SELECT FLOOR(0),FLOOR(3.45),FLOOR(-3.45);

FLOOR(x)函数的执行结果如下:

等于0的整数仍然为0,因此FLOOR(0)的返回值为0;小于3.45的最大整数为3,因此返回值为3;-3.45是负数,小于-3.45的最大整数为-4,因此返回值为-4。

mysql函数if为负数_MySQL的if,case语句相关推荐

  1. mysql函数编写格式_MySQL函数基础——字符串函数详解

    昨天,咱们对MySQL的数学函数进行了讲解,今天,咱们再来解析MySQL字符串函数. 字符串函数主要用来处理数据库中的字符串数据,MySQL中字符串函数有:计算字符串长度函数.字符串合并函数.字符串替 ...

  2. mysql 中 case语句吗_Mysql中的Case语句

    1.Case基本初识 case语句是mysql中的一个条件语句,可以在字段中使用case语句进行复杂的筛选以及构造新的字段.下面通过两个leetcode例子来详细解读case语句的功能: 1.1 Le ...

  3. mysql alert 新增字段_mysql 增加字段 sql 语句

    mysql 增加字段 sql 用 alter table add 语句,它属于 DDL 范畴,它也可以指定新增字段的位置. 新增字段语句 MySQL 针对指定表增加字段的语法如下: ALTER TAB ...

  4. mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?

    推荐阅读: MySQL复习:20道常见面试题(含答案)+21条MySQL性能调优经验 秋招Java面试大纲:Java+并发+spring+数据库+Redis+JVM+Netty等 以天为统计周期,是常 ...

  5. mysql 函数的参数_MySQL中的数值函数

    加减乘除(+.-.*./)均可用于数值计算. SELECT (1 + 1) / (1 * 2.2 - 3) 执行算术函数 单参数数值函数举例: acos(x), asin(x), atan(x), c ...

  6. mysql函数数组参数_MYSQL数组聚合函数,如PostgreSQL array_agg

    我在MYSQL上有两个表,我想知道MYSQL上是否有任何聚合函数作为array_agg()FROM postgreSQL. 表1属性仅有8条记录 表2捕获该属性的记录,因此对于同一属性有时可以是1或n ...

  7. mysql函数保留小数_MySql自定义函数-关于保留小数位的特殊需求

    背景 昨天,关于价格详情接口又来了一个小需求,而且有点特别.价格显示:改为保留两位小数,没错,就是保留两位小数.大家是不是想说这没啥特别的...数据库都有函数搞定了.例如四舍五入的ROUND(x,d) ...

  8. mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...

    一.存储过程和函数的区别 函数调用有返回值 存储过程调用用call语句,函数调用直接饮用函数名+参数 IN,OUT,INOUT 只适用于存储过程,对函数而言所有参数默认都是输入参数 IN用于把数值传入 ...

  9. mysql 函数怎样创建_mysql里怎样创建函数

    mysql里创建函数的方法: 一.查看创建函数的功能是否开启: mysql> show variables like '%func%'; +--------------------------- ...

最新文章

  1. Android之解剖网络请求框架Volley
  2. 【运筹学】运输规划求最大值 ( 运输规划求最大值问题示例 | 转为运输规划求最小值的方式 )
  3. ECMAScript数据属性和访问器属性
  4. 如何修改VC6的项目名
  5. 阿里影业正式成为阿里集团子公司 俞永福辞任执行董事
  6. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)
  7. 文献阅读:《Generative Adversarial Active Learning for Unsupervised Outlier Detection》-2020 trans
  8. “error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用”解决方法。
  9. PrefTest性能测试解决方案 -- C/S结构应用系统的压力测试
  10. 非线性规划求解器 Lingo, Matlab 使用心得,及使用的求解算法
  11. 计算机辅助绘图包括,计算机辅助绘图实用教程
  12. 【论文笔记】ego_planner
  13. 最新WIN10系统封装教程2019系列(七)——封装
  14. html做战网首页,战网更新agent一半不动
  15. 微信小程序的开发之手机号、邮箱验证
  16. GUNS框架图片上传详解
  17. 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
  18. java oval_Java对象校验框架Oval怎么使用 | 学步园
  19. Git 出现not registered inyour account 解决办法
  20. 网站搜索引擎优化问题

热门文章

  1. python编写存储过程_存储过程 - msjaxuexi - 博客园
  2. 给我一个西门子plc采集大数据存储与分析方案
  3. 破解root密码详细流程
  4. 耶鲁大学 博弈论(Game Theory) 笔记6-纳什均衡之纳什均衡之伯川德模型与选民投票
  5. java+vue+SSM215的病人跟踪治疗信息管理系统毕业设计
  6. ES6—字符串模板引擎
  7. 高速高精度直线电机模组运输存放及安装维护的注意事项
  8. linux英伟达显卡内核不匹配,解决ubuntu16.04循环登录问题,原因为linux图形化界面和英伟达显卡不兼容...
  9. 股票类APP排名:同花顺第一、大智慧第二、东方财富网第三
  10. 在Lua中使用枚举型变量