zoukankan      html  css  js  c++  java
  • Mysql数据库If语句的使用

    Mysql 的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:

    IF表达式

    IF(expr1,expr2,expr3)

    如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

    select if(sva=1,"男","女") as ssva from taname where id = '111' 

    作为表达式的if也可以用CASE when来实现:

    select CASE sva WHEN 1 THEN '' ELSE '' END as ssva from taname where id = '1'  

    在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。

    SELECT CASE 1 WHEN 1 THEN 'one'  
      WHEN 2 THEN 'two'   
       ELSE 'more' END  
    as testCol  

    将输出one

    IFNULL(expr1,expr2)

    假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

    mysql> SELECT IFNULL(1,0);  
            -> 1  
    mysql> SELECT IFNULL(NULL,10);  
            -> 10  
    mysql> SELECT IFNULL(1/0,10);  
            -> 10  
    mysql> SELECT IFNULL(1/0,'yes');  
            -> 'yes'  

    FNULL(expr1,expr2) 的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。
    IF ELSE 做为流程控制语句使用

    if实现条件判断,满足不同条件执行不同的操作,这个我们只要学编程的都知道if的作用了,下面我们来看看mysql 存储过程中的if是如何使用的吧。

    IF search_condition THEN   
        statement_list    
    [ELSEIF search_condition THEN]    
        statement_list ...    
    [ELSE   
        statement_list]    
    END IF   

    与PHP中的IF语句类似,当IF中条件search_condition成立时,执行THEN后的statement_list语句,否则判断ELSEIF中的条件,成立则执行其后的statement_list语句,否则继续判断其他分支。当所有分支的条件均不成立时,执行ELSE分支。search_condition是一个条件表达式,可以由“=、<、<=、>、>=、!=”等条件运算符组成,并且可以使用AND、OR、NOT对多个表达式进行组合。

    SELECT * , (
    SELECT COUNT( DISTINCT money ) 
    FROM (SELECT g.operator, FLOOR( IFNULL( SUM( g.visitmoney ) , 0 ) )  `money` , COUNT( * ) num, u.username
    FROM  `guest` g, user u
    WHERE g.operator = u.id
    AND u.group =2
    AND g.isvisittime >1543766400
    AND g.isvisittime <1544371200
    
    GROUP BY operator
    ORDER BY  `money` DESC 
    )aa
    WHERE money >= a.money
    ) AS 
    ROW FROM (
    
    SELECT g.operator, FLOOR( IFNULL( SUM( g.visitmoney ) , 0 ) )  `money` , COUNT( * ) num, u.username
    FROM  `guest` g, user u
    
    WHERE g.operator = u.id
    AND u.group =2
    AND g.isvisittime >1543766400
    AND g.isvisittime <1544371200
    
    GROUP BY operator
    ORDER BY  `money` DESC
    )a
  • 相关阅读:
    jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
    如何使用 jMeter Parallel Controller
    使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
    使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
    关于 SAP 电商云首页加载时触发的 OCC API 请求
    SAP UI5 确保控件 id 全局唯一的实现方法
    SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
    介绍一个好用的能让网页变成黑色背景的护眼 Chrome 扩展应用
    Chrome 开发者工具 performance 标签页的用法
    Client Side Cache 和 Server Side Cache 的区别
  • 原文地址:https://www.cnblogs.com/johnhery/p/10063890.html
Copyright © 2011-2022 走看看