龙空技术网

MySQL 实现类似IF判断

东北大明白 42

前言:

如今各位老铁们对“mysql中判断函数”都比较讲究,兄弟们都想要知道一些“mysql中判断函数”的相关资讯。那么小编也在网络上汇集了一些对于“mysql中判断函数””的相关内容,希望姐妹们能喜欢,你们快快来了解一下吧!

用户表

sex:1-男,2-女,3-未知;

level是客户的级别:1-超级VIP客户,2-VIP客户,3-普通客户

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

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

结果:

用法二:

case when 后面跟着条件

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

标签: #mysql中判断函数 #mysqlif子查询 #oracle查询时判断if #oracle中ifelse的三种实现方式