zoukankan      html  css  js  c++  java
  • MYSQL-----控制流程函数(case when...then..else..end)

    MySQL有一些内置的控制流程函数,可以在SQL语句中使用这些函数来更加准确和直接的结果。

    第一种语法:

    case

    when [value] then result

    ..................

    end 

    第二种语法:

    case

    when [condition] then result

    ................

    [else result]

    end

       该函数依据condition的值是否是真而产生不同的结果,除了多重条件与结果可能会绑定在一起之外,该函数与if()函数十分类似,上面显示的语法在case之后给定的value值与每个when之后的value值进行比较,如果结果匹配,结果将返回then之后给出的result值.

        第二种语法独立地测试每个条件,它们并不是已单个值为基础的,对于这两种用法而言,如果找不到匹配的值,则应将else子句包括进来并返回else子句所给定的结果,如果既没有匹配的值也没有给定else子句,则结果返回NULL值。

      如果选择的result是字符串,则结果返回一个字符串数据类型的值,如果result是数值型的,那么返回的结果可能是十进制,实型或者整形的值。

    示例需要实现的结果:age小于等于12的用1替换,age大于70小于100的用2替换,如下是简单的查询结果

     

    第一种语法的示例如下:

    #age:12,46,70,84#
     select uuid,mobile,case 
     when age <= 12 then 1
     when age >=70 and age <=100 then 2
     end 
     as "年龄"
     from user where mobile="53437569";

    查询结果:age小于等于12的用1已替换,age大于70小于100的用2已替换

     

    第二种语法示例:多了一步else,当满足给定的when条件后的其他值,将会用else给定的值来填充,将不会在出现NULL值

    select uuid,mobile,case 
     when age <= 12 then 1
     when age >=70 and age <=100 then 2
     else 9
     end 
     as "年龄"
     from user where mobile="53437569";

    查询结果如下:

     忽然看到一篇讲解也很不错的文章,附链接:https://codedefault.com/2018/mysql-database-if-in-select-statement-choose-output-value-based-on-column-values

      

  • 相关阅读:
    centos7下安装erlang
    centos7下升级git版本
    pytest失败重跑插件: pytest-rerunfailures使用与坑(全网独家精华)
    pytest-assume插件(全网最详细解释):多重断言执行
    pytest踩坑记:NameError: name 'pytest' is not defined
    pytest-ordering:指定pytest的case运行顺序的插件
    pytest中print的坑
    pytest测试入门篇(ExitCode退出码)
    httprunner3.x遇到的问题(hrun make报错)
    httprunner3.x(入门介绍篇)
  • 原文地址:https://www.cnblogs.com/syw20170419/p/10211159.html
Copyright © 2011-2022 走看看