当前位置:网站首页>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;
上述分别是用了等值判断和值的映射去实现,一般我更喜欢使用第一种,因为有时候还可以范围运算。
边栏推荐
- empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType),
- Embedding的两种实现方式torch代码
- pyspark---对suuid区间编码(基于曝光数、点击数)
- MySQL 日期时间类型精确到毫秒
- PCB板上的字母代表哪些元器件?一文看全!
- PCB 多层板为什么都是偶数层?
- PCB制造常用的13种测试方法,你了解几种?
- ES6 - 剩余参数,Array的扩展方法,String的扩展方法
- Scala 高阶(七):集合内容汇总(上篇)
- 信息学奥赛一本通T1447:靶形数独
猜你喜欢
MySQL的on duplicate key update 的使用
Autowired注解与Resource注解的区别
PCB 多层板为什么都是偶数层?
【云原生 · Kubernetes】Kubernetes基础环境搭建
10 common data types in MySQL
el-table gets the data attribute of a row in the read data table
El - tree to set focus on selected highlight highlighting, the selected node deepen background and change the font color, etc
IEEE RAL投初稿
MySQL 操作语句大全(详细)
Flink的Exactly-Once、状态机制、watermark机制
随机推荐
SQLServer2019安装(Windows)
AR路由器如何配置Portal认证(二层网络)
VO、DTO、DO、POJO的区别和概念
prometheus 监控mysql数据库
Scala 高阶(八):集合内容汇总(下篇)
UniApp 获取当前页面标题(navigationBarTitleText)
一家可靠的HDI板厂,需要具备哪些基本条件?
mysql慢查询优化
微信小程序 - 监听 TabBar 切换点击事件
信息学奥赛一本通T1451:棋盘游戏
MySQL的 DDL和DML和DQL的基本语法
DIFM network, rounding and repetition
信息学奥赛一本通T1452:Keyboarding
FiBiNet torch reproduction
el-tree设置利用setCheckedNodessetCheckedKeys默认勾选节点,以及通过setChecked新增勾选指定节点
linux安装redis
process.env环境变量配置方式(配置环境变量区分开发环境和生产环境)
Chrome 配置samesite=none方式
HDI与普通PCB的4点主要区别
Charles抓包显示<unknown>解决方案