MySQL - CASE vs IF Statement vs IF function

后端 未结 1 863
不思量自难忘°
不思量自难忘° 2021-02-02 09:41

Who can please explain the difference between CASE-statement, IF-statement and IF-function?

What is the difference in terms of usag

相关标签:
1条回答
  • 2021-02-02 10:26

    From the manual, it looks like the if function is just a less flexible form of the case expression. For example, you could write:

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

    And the equivalent with case:

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

    But case is more flexible. It allows more than one branch, like:

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

    And it can act like a switch:

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

    Now the if statement is an entirely different beast. It is a control statement in MySQL procedures. The statement form looks like:

    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. It looks like Mr Bean isn't all that he's made up to be!

    A final note: the case expression is standard SQL and works in most databases. The if function is not standard SQL and will not work in other databases, like SQL Server or PostgreSQL.

    0 讨论(0)
提交回复
热议问题