第二十七日-MYSQL的「如果」:IF、CASE基本用法

IF、CASE翻成中文就是「如果」,根据条件来决定要执行的事情,
在各个程序语法理面都会有类似的语法,MYSQL也不例外
今天介绍的是IF、CASE基本用法,
那这两个使用时间分别是什麽呢?

IF的意思是:如果怎麽样...就怎麽样
「如果是特惠期间入学,学费就打八折!」、
「如果周年庆消费凑买一万元,回馈红利点数两百点。」,
生活中的各种如果,在MYSQL就变成IF。

那如果状况是「如果客人喜欢夏天,推荐他海洋扩香;喜欢春天,
推荐玫瑰花香;喜欢秋天,推荐甜甜的蜂蜜;都不是就推荐茉莉花香」,
像这样CASE BY CASE,根据状况决定行动
我们就使用CASE语法。

  • IF...ELSE

IF...ELSE便是如果[条件]就[结果一],剩下不满足条件的就[结果二],
语法是:
IF(条件,符合条件要做的事,不符合条件要做的事)

例如我们想要把学生的性别翻成中文就能写:
如果gender是F,就写女生,其他的就写男生。

SELECT full_name,IF(gender='F','女','男') AS '性别',gender FROM education.student;
  • CASE

CASE用法是如果[条件一]就[结果一],如果[条件二]就[结果二],.....,剩下不满足条件的就[结果x],
中间想写几个条件就写几格条件。
写法有两种:第一种只能判断栏位的值是不是等於特定值,第二种则是可以加上条件。

  1. 第一种CASE写法

    第一种写法写起来简单,但只能判断栏位里面是不是特定值,
    CASE 栏位 WHEN [特定值一] THEN [返回值一] WHEN [特定值二] THEN [返回值二] ELSE [返回值三] END AS [栏位显示名称]

    例如我们想把class的课程翻成中文,就可以假设如果课程id是1,会是「钢琴」,
    如果课程id是2,会是「鼓」,其他当作「未知」,最後这个栏位名称要显示「课程名称」。

    SELECT 
    CASE id WHEN 1 THEN '钢琴' WHEN 2 THEN '鼓' ELSE '未知' END AS '课程名称',
    subject FROM education.class ORDER BY id;
    
  2. 第二种CASE写法

    第二种写法写起来比较麻烦,但是可以做的事情比较多:
    CASE WHEN [条件一] THEN [结果一] WHEN [条件二] THEN [结果二] ELSE [结果x] END AS [栏位显示名称]

    例如我们和刚刚一样,把class的课程翻成中文,但这次我们可以试着把OR跟AND加进去,
    就会变成「如果id是1,会是「钢琴」,如果id是2或是3,会是「吉他或鼓」,
    如果id大於3而且小於5,会是「声乐」,以上条件都不满足就是「声乐」,
    最後这个栏位名称要显示「课程名称」。」

    SELECT 
    CASE WHEN id =1 THEN '钢琴' WHEN id =2 OR ID=3 THEN '吉他或鼓' WHEN id >3 AND id<5 THEN '声乐' ELSE '作曲' END AS '课程名称',
    subject FROM education.class ORDER BY id;
    

<<:  二、教你怎麽看source code,找到核心程序码 ep.19:把tfrecord parse完了,接着做了哪些preprocess? 3

>>:  [Vue2Leaflet系列二] Leaflet Plugins with Vue

大共享时代系列_007_共享交通

驶向新方向~ 需要花钱买交通工具吗? 每个人对於交通工具的使用需求不同,对某些偶尔使用的人来说,有需...

Day13:[解题技巧]Two pointers -  双指针

双指针算是一个解题蛮常用的小技巧,双指针指的是用两个指针对整个资料做遍历,而双指针又依照移动的方向...

Day28 订单 -- 定期定额

在好几年前串接金流的时候,还有没定期定额的选项, 记得那时接触的是团体的捐款网站要串接定期定额的功能...

Python 演算法 Day 12 - Weak Learning

Chap.II Machine Learning 机器学习 https://yourfreetemp...

[Day 17] 新功能的测试,检验不应该存在的资料

自动测试时除了检查加入新资料,有时我们也会希望检查旧资料是否成功地被移除。 今天我们用一个新的功能,...