zoukankan      html  css  js  c++  java
  • SQL语句中IF的简单使用

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

    IF表达式

    IF(expr1,expr2,expr3)
    

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

    SELECT IF(sva=1,"男","女") AS s FROM table_name 
    WHERE sva != '';
    

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

    SELECT CASE sva
    WHEN 1 THEN '男' 
      ELSE '女' END AS s FROM table_name
    WHERE sva != '';
    

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

    例如:

    SELECT CASE 1 
    WHEN 1 THEN 'one'
    WHEN 2 THEN 'two' 
       ELSE 'more' END AS test
    

    将输出one

    IFNULL(expr1,expr2)

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

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

    IFNULL(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 
    

    示例(leetcode 627.交换工资)

    给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。

    注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

    例如:

    id name sex salary
    1 A m 2500
    2 B f 1500
    3 C m 5500
    4 D f 500

    运行你所编写的更新语句之后,将会得到以下表:

    id name sex salary
    1 A f 2500
    2 B m 1500
    3 C f 5500
    4 D m 500
    # Write your MySQL query statement below
    update salary
    set sex = if(sex= 'f','m','f')
    
  • 相关阅读:
    浏览器的跨域请求 与 CORS(跨域资源共享)
    HTML 占位符
    C# 中的 base和this
    推荐一个pdf引擎
    整理wifi相关的知识点
    交叉编译(ISC)DHCP:dhcp-4.3.0b1
    (转载)子网掩码,网关的概念
    海思-VB被占用导致vb无法去初始化
    c++创建文件时重命名同名文件
    iw创建虚拟网卡wlan1,ap_sta共存
  • 原文地址:https://www.cnblogs.com/coderzjz/p/13426290.html
Copyright © 2011-2022 走看看