mysql的if,case使用笔记

在sql表达式中:

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 sva != ""

 

   当sva为1时返回男,否则返回女。

ifnull表达式:

ifnull(expr1,expr2)

 

 当expr1<>null,返回expr1,否则返回expr2,可嵌套:

ifnull(ifnull(expr1,ifnull(...)),ifnull(...))

 

  case when表达式:

两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。 

两种格式都支持可选的 ELSE 参数。

完整的简单case when

CASE input_expression
    WHEN when_expression THEN result_expression
        [ ...n ]
    [ 
        ELSE else_result_expression
    END

 

  

当input_expression = when_expression时,返回result_expression

select (case aix 
    when 's400' then 'hp'
    when 'a10' then 'dell'
    else 'any'
    end) machineName
from tablename  

 

 input_expression一般为表字段,或者 其他有效的sql表达式(这句没太明白)。

 when_expression为与input_expression数据类型相同,或者可隐性转换。也就是说这里是不能是某种boolean表达式(字符串比较、表达式计算等),除非input_expression是bool型的。

完整的搜索case when

CASE    
WHEN Boolean_expression THEN result_expression
        [ ...n ]
    [ 
        ELSE else_result_expression
    END

 

  当boolean_expression=true,返回result_expression.

select (case 
    when aix = 's400' then 'hp'
    when aix = 'a10' then 'dell'
    else 'any'
    end) machineName
from tablename  

 

   可以理解为简单case when省略了case 后的true。两者的执行过程或不同,还有待研究。

 

  

  

 

 

你可能感兴趣的:(mysql的if,case使用笔记)