SQL语句中IF的简单使用

摘要:
MySQL IF可以用作存储过程中的表达式或进程控制语句。以下表达式用作表达式:IF表达式IF如果expr1为TRUE,则IF()的返回值为expr2;否则,返回值为expr3。IFNULL()的返回值是数字或字符串,具体取决于使用它的上下文。IFELSE作为过程控制语句,使用IF实现条件判断,并执行不同的操作以满足不同的条件。只要我们学习如何编程,我们都知道IF的作用。让我们看看如何在MySQL存储过程中使用IF。只需要一个更新语句,并且没有中间临时表。

MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:

IF表达式

IF(expr1,expr2,expr3)

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

SELECT IF(sva=1,"男","女") AS s FROM table_name 
WHERE sva != '';

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

SELECT CASE sva
WHEN 1 THEN '男' 
  ELSE '女' END AS s FROM table_name
WHERE sva != '';

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

例如:

SELECT CASE 1 
WHEN 1 THEN 'one'
WHEN 2 THEN 'two' 
   ELSE 'more' END AS test

将输出one

IFNULL(expr1,expr2)

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

 SELECT IFNULL(1,0);
 -> 1

SELECT IFNULL(NULL,10);
 -> 10

SELECT IFNULL(1/0,10);
-> 10

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 

示例(leetcode 627.交换工资)

给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

例如:

idnamesexsalary
1Am2500
2Bf1500
3Cm5500
4Df500

运行你所编写的更新语句之后,将会得到以下表:

idnamesexsalary
1Af2500
2Bm1500
3Cf5500
4Dm500
# Write your MySQL query statement below
update salary
set sex = if(sex= 'f','m','f')

免责声明:文章转载自《SQL语句中IF的简单使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Swing自定义JTable列的宽度详解tomcat的连接数与线程池下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql中的information_schema数据库表说明

1. 概述 information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。 information_sch...

数据字典的应用实例

要熟悉一个全新的oracle数据库系统的结构并准备出详细的oracle结构文档的步骤思路如下: 1、得到现有的oracle的数据库的名字、创建日期等信息v$database select name,created,log_mode,open_mode from v$database; 获得数据库的日志运行状态(归档/非归档)和运行模式(可读可写) 2、获得...

从mysql数据库删除重复记录只保留其中一条(保留id最小的一条)

准备工作:新建表tb_coupon /* Navicat Premium Data Transfer Source Server : root@localhost Source Server Type : MySQL Source Server Version : 50527 Source Host...

layui select动态添加option

<form class="layui-form" action=""> <div class="layui-form-item proSelect"> <label class="layui-form-label">产品类别</label> <div...

图解 SQL 各种连接查询之间的区别

关于sql的join语法 ,有很多种用法,如left,inner等等    假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同。 1.  INNER JOIN SELECT * FROM TableA  INNER JOIN TableB ON ...

DB2查询前100到后200之间的数据

select T.sicCd form Table T where T.sicCd not in ( select sicCd form Table fetch first 100 rows only ) fetch first 100 rows only...