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

      

  • 相关阅读:
    oracle 数据库服务名怎么查
    vmware vsphere 6.5
    vSphere虚拟化之ESXi的安装及部署
    ArcMap中无法添加ArcGIS Online底图的诊断方法
    ArcGIS中字段计算器(高级计算VBScript、Python)
    Bad habits : Putting NOLOCK everywhere
    Understanding the Impact of NOLOCK and WITH NOLOCK Table Hints in SQL Server
    with(nolock) or (nolock)
    What is “with (nolock)” in SQL Server?
    Changing SQL Server Collation After Installation
  • 原文地址:https://www.cnblogs.com/syw20170419/p/10211159.html
Copyright © 2011-2022 走看看