当前位置:网站首页>MySQL 流程控制
MySQL 流程控制
2022-08-03 05:39:00 【知其黑、受其白】
阅读目录
MySQL流程控制 IF()、IFNULL()、NULLIF()、ISNULL()函数的使用
MySQL IF() 函数的使用
SELECT IF(TRUE,'A','B'); -- 输出结果:A
SELECT IF(FALSE,'A','B'); -- 输出结果:B
SELECT
id,
title,
IF (
url IS NULL,
'没奖金呵呵',
'有奖金嘻嘻'
) AS 链接
FROM
video;


mysql> select if(true,'hello','world');
+--------------------------+
| if(true,'hello','world') |
+--------------------------+
| hello |
+--------------------------+
1 row in set (0.00 sec)
mysql> select if(false,'hello','world');
+---------------------------+
| if(false,'hello','world') |
+---------------------------+
| world |
+---------------------------+
1 row in set (0.00 sec)
分支结构之 IF
IF 表达式1 THEN 操作1
[ELSEIF 表达式2 THEN 操作2]……
[ELSE 操作N]
END IF
IFNULL() 函数的使用
SELECT IFNULL(NULL,'B'); -- 输出结果:B
SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO
NULLIF() 函数的使用
SELECT NULLIF('A','A'); -- 输出结果:null
SELECT NULLIF('A','B'); -- 输出结果:A
ISNULL() 函数的使用
SELECT ISNULL(NULL); -- 输出结果:1
SELECT ISNULL('HELLO'); -- 输出结果:0
case 函数
CASE 表示函数开始,END 表示函数结束。
如果 condition1 成立,则返回 result1,
如果 condition2 成立,则返回 result2,
当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END
传参的写法:

不传参的写法

实操案例
准备数据
-- 创建订单表
CREATE TABLE orders (
oid INT PRIMARY KEY,
-- 订单id
price DOUBLE,
-- 订单价格
payType INT -- 支付类型(1:微信支付 2:支付宝支付 3:银行卡支付 4:其他)
);
insert into orders values(1,1200,1);
insert into orders values(2,1000,2);
insert into orders values(3,200,3);
insert into orders values(4,3000,1);
insert into orders values(5,1500,2);
示例 1

select
*,
case
when payType=1 then "微信支付"
when payType=2 then "支付宝支付"
when payType=3 then "银行卡支付"
else "其他支付方式"
end as payTypeStr
from orders;
示例 2

select
*,
case payType
when 1 then "微信支付"
when 2 then "支付宝支付"
when 3 then "银行卡支付"
else "其他支付方式"
end as payTypeStr
from orders;
上述分别是用了等值判断和值的映射去实现,一般我更喜欢使用第一种,因为有时候还可以范围运算。
边栏推荐
- 【EA Price strategy OC1】以实时价格为依据的EA,首月翻仓!】
- MySQL之DQL——查询语言
- 502 bad gateway原因、解决方法
- 信息学奥赛一本通T1446:素数方阵
- Shell脚本--信号发送与捕捉
- 信息学奥赛一本通T1450:Knight Moves
- Composer require 报错 Installation failed, reverting ./composer.json and ./composer.lock to their ...
- Getting started with el-tabs (tab bar)
- Docker-compose安装mysql
- 【云原生 · Kubernetes】Kubernetes基础环境搭建
猜你喜欢

MySQL的DATE_FORMAT()函数将Date转为字符串

1066 Root of AVL Tree // AVL平衡二叉搜索树模板

torch.nn.modules.activation.ReLU is not a Module subclass

linux安装mysql

cookie和session区别

沉铜/黑孔/黑影工艺,PCB该 Pick 哪一种?

MySQL的on duplicate key update 的使用

【云原生 · Kubernetes】Kubernetes简介及基本组件

MySQL的Replace用法详解

Getting Started with Chrome Plugin Development
随机推荐
AutoInt网络详解及pytorch复现
linux安装redis
mysql的配置文件(my.ini或者 my.cnf)所在位置
PCB制造常用的13种测试方法,你了解几种?
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
el-tree设置利用setCheckedNodessetCheckedKeys默认勾选节点,以及通过setChecked新增勾选指定节点
FiBiNet torch复现
MySQL的Replace用法详解
MySQL的安装教程(嗷嗷详细,包教包会~)
IFM network detailed explanation and torch reproduction
PCB 多层板为什么都是偶数层?
记一次postgresql中使用正则表达式
信息学奥赛一本通T1452:Keyboarding
2021年PHP-Laravel面试题问卷题 答案记录
MySQL忘记密码怎么办
Cesium加载离线地图和离线地形
spark中的cache和checkpoint
pyspark---低频特征处理
一篇文章教你写扫雷(c语言基础版)
Nacos与Eureka的区别