MySQL - CASE与IF语句与IF函数

时间:2015-05-05 08:37:12

标签: mysql

谁可以解释CASE声明,IF声明和IF函数之间的区别?

使用方法和"工作方式有何不同"?

1 个答案:

答案 0 :(得分:27)

From the manual,看起来if函数只是case表达式的一种不太灵活的形式。例如,您可以写:

select if(username = 'darxysaq', 'high', 'low') as awesomeness

等同于case

select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness

case更灵活。它允许多个分支,例如:

select case 
       when username = 'darxysaq' then 'high' 
       when username = 'john skeet' then 'medium' 
       else 'low' 
       end as awesomeness

它可以像switch

select case username 
       when 'darxysaq' then 'high' 
       when 'john skeet' then 'medium' 
       else 'low' 
       end as awesomeness

现在if声明是一个完全不同的野兽。这是一个control statement in MySQL procedures。声明表格如下:

CREATE FUNCTION GetAwesomeness (username varchar(50))
RETURNS varchar(20)
BEGIN
   IF username = 'darxysaq' THEN
      return 'high';
   ELSEIF username = 'john skeet' THEN
      return 'medium';
   ELSE
     return 'low';
   END IF;
END; //

Here's a SQL Fiddle with the statement version.看起来憨豆先生并不是他所做的一切!

最后一点:case表达式是标准SQL,适用于大多数数据库。 if函数不是标准SQL,不能在SQL Server或PostgreSQL等其他数据库中使用。