• day010--mysql中的分支函数


    在对我们的数据表进行判断处理时,就需要使用到mysql中的分支语句。有计算机语言基础的看到分支语句脑海里面闪现出来的应该时“if..”或者是“if...else...”语句,MySQL中虽然没有这种一模一样的格式,但是却是有这种类似的函数来给我们进行调用。接下来我们去认识mysql中的4个分支函数。

    目录

    一,if(condition,value1,value2)

    二,ifnull(value1,value2)

    三,case when  condition then result ...else result end alias  

    四,case filed when filed's value then  result...else result end alias


     

    一,if(condition,value1,value2)

    if函数if(condition,value1,value2)的参数列表中condition表示为条件的意思,当我们将三个参数传入进去,该函数就会进行判断,如果符合我们传入的condition条件的话,就会返回第二个参数value1,如果不符合我们传入的条件condition的话,就会返回value2。现在让我们使用具体的案例来进一步加深对该函数的理解:

    现在我们有这样一张表:

     从上面我们可以看到名字为“wangwu”的员工没有薪资(因为才刚进来,还没到他发工资的时候) 

    这个时候我们想要计算这三个人3个月后的工资是多少【注:wangwu的底薪3000】时:

    SELECT * ,salary * 3 AS threemonths FROM contain_null;

     

     我们可以看到wangwu的工资依旧是,因为我们的null参与进来我们计算并干扰到了我们的结果。这个时候我们就需要使用if判断函数先对含有null的数据进行修改,一般是将含有null的数据修改成0,接着再在这个基础上进行计算:

    SELECT * ,IF(salary IS NOT NULL,salary,0) AS salary1 FROM contain_null;

    或者是直接在里面计算出来,如下:

    SELECT * ,IF(salary IS NOT NULL,salary *3 ,3000*2) AS threemonths FROM contain_null;

     接下来我们去认识第二个函数:ifnull()

    二,ifnull(value1,value2)

    ifnull函数其实就是if(condition,value1,value2)的特殊形式,就是当我们的condition条件为所判断的数据含有零时。

    ifnull函数只针对于数据含有null空值的时候:如果数据为不为null则返回value1,否则返回value2,我们之前计算wangwu的工资也可以使用这个函数:

    SELECT * ,IFNULL(salary *3 ,3000*2) AS threemonths FROM contain_null;

     

     所以也可以这么说,“ifnull是为null空值而生的函数”。

    三,case when  condition then result ...else result end alias  

     case when  condition then result ...else result end alias 该语句就相当于Java中的if...else...if...else

    语句。我们可以这么翻译该函数:论据 当该条件成立,返回一个对应的结果...如果是其他情况,返回其他的结果,然后再给我们的查询结果集取一个别名。

    如下我们有这样一张表:

    该表各字段所代表的意思如下:

    1. stu_name:学生姓名
    2. stu_id:学生学号(学生id)
    3. stu_score:学生的综合成绩
    4. stu_get1:学生的德育分
    5. stu_get2学生的智育分
    6. stu_total:学生的德育分总分
    7. sch_id:学校id

    接着我们使用按照成绩对上面的学生进行划分,如stu_score学生成绩总分在90分及以上判定为“优秀”,85分以上但是没有到90分为“良好”,80分以上不超过85分为“一般”,剩下的等级为“还需要努力”:

    1. SELECT stu_name,stu_score,CASE WHEN stu_score >=90 THEN '优秀'
    2. WHEN stu_score BETWEEN 85 AND 90 THEN '良好'
    3. WHEN stu_score BETWEEN 80 AND 85 THEN '一般'
    4. ELSE '还需要努力' END stu_grade
    5. FROM 20student;

    四,case filed when filed's value then  result...else result end alias

    case filed when filed's value then  result...else result end alias与case when  condition then result ...else result end alias  语句的不同之处在于它在论据,案例case之后直接写入了表格中的字段名,并根据该字段里面的数据进行判断,有点和我们java中的switch...case类似。

    我们还是使用之前的学生表,并使用该函数对学生表进行处理:当sch_id学校id为1时,对应的学校为“麻省理工学院”,id为2对应“南洋理工大学”,id为3对应“瑞士联邦理工学院”:

    1. SELECT stu_name,sch_id,CASE sch_id WHEN 1 THEN '麻省理工学院'
    2. WHEN 2 THEN '南洋理工大学'
    3. WHEN 3 THEN '瑞士联邦理工学院'
    4. END stu_collage
    5. FROM 20student;

    如上,当我们不使用else给其他情况的数据给值的话,默认为null。

  • 相关阅读:
    spring cloud feign实现服务的远程调用和负载均衡
    【SpringBoot】启动过程之——SpringApplication初始化及运行
    【测试理论基础之网页/app测试】
    N9917A|是德科技keysight N9917A微波分析仪
    如何合并pdf文件到一个pdf
    常用函数式接口:Consumer、Predicate、Function的方法说明解练习
    轻松驾驭Python格式化:5个F-String实用技巧分享
    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署
    【牛牛前端面试每天练】一,HTML与CSS专项
    【STK】手把手教你利用STK进行仿真-STK软件简介03 STK扩展接口
  • 原文地址:https://blog.csdn.net/weixin_53046747/article/details/126916072