• mysql中可以实现类似if判断的方法


    新建一张客户表,如下:sex:1-男,2-女,3-未知;level是客户的级别:1-超级VIP客户,2-VIP客户,3-普通客户

    方式一:case函数:流程控制函数

    用法一:

    CASE expression
    WHEN value1 THEN returnvalue1
    WHEN value2 THEN returnvalue2
    WHEN value3 THEN returnvalue3
    ……
    ELSE defaultreturnvalue
    END

    例子:

    SELECT
        t.NAME,
        (
            CASE t.sex
            WHEN 1 THEN
                ''
            WHEN 2 THEN
                ''
            ELSE
                '未知'
            END
        ) 性别
    FROM
        t_customer t

    结果:

    用法二:

    CASE
    WHEN condition1 THEN returnvalue1
    WHEN condition 2 THEN returnvalue2
    WHEN condition 3 THEN returnvalue3
    ……
    ELSE defaultreturnvalue
    END

    例子:

    SELECT
        t.NAME,
        (
            CASE 
            WHEN t.sex=1 THEN
                ''
            WHEN t.sex=2 THEN
                ''
            ELSE
                '未知'
            END
        ) 性别
    FROM
        t_customer t

    方式二: IF()函数

    使用CASE函数可以实现非常复杂的逻辑判断,可是若只是实现“如果符合条件则返回A,否则返回B”这样简单的判断逻辑的话,使用CASE函数就过于繁琐。MYSQL提供了IF()函数用于简化这种逻辑判断,其语法格式如下:IF(expr1,expr2,expr3)

    如果 expr1 为真(expr1 <> 0 以及 expr1 <> NULL),那么 IF() 返回 expr2,否则返回expr3。IF()返回一个数字或字符串,这取决于它被使用的语境。
    例子:

    select t.name,if(t.weight<80,'正常','肥胖') 体重 from t_customer t

    感觉这个作用和oracle 的nvl函数类似

    mysql还有一个IFNULL(value1,value2)函数,这个函数一般用来替换 NULL 值的,我们知道 NULL 值是不能参与数值运算的,比如把emp员工表的员工的提成给加100,可以这么干:

    update emp set comm  = IFNULL(comm,0)+100,这样就把提成comm为null的替换成了0,从而不会出现null+100=null。

    方式三:字符串的集合操作ELT()

    ELT(N,str1,str2,str3,...)

     如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。

     例子:

    SELECT
        t. NAME,
        ELT(
            t. LEVEL,
            '超级VIP',
            'VIP',
            '普通'
        ) 客户类型
    FROM
        t_customer t

  • 相关阅读:
    SqlServer CDC的使用
    javabean的自省机制
    javascript验证汉字,字符,等正则表达式
    温习ASP调用C#的DLL并实现用户名密码进行域验证反馈结果
    基于RSA算法在asp中加密与解密对应的函数
    SQL查询所有表,字段名,主键,类型,长度,小数位数,允许空,默认值,字段说明
    c语言文法定义
    0909对编译原理的了解
    语法分析
    1112评论
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/6733002.html
Copyright © 2020-2023  润新知