sql >> Databasteknik >  >> RDS >> Mysql

MySQL - CASE vs IF Statement vs IF-funktion

Från manualen , det ser ut som if funktion är bara en mindre flexibel form av case uttryck. Du kan till exempel skriva:

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

Och motsvarande med case :

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

Men case är mer flexibel. Det tillåter mer än en gren, som:

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

Och den kan fungera som en switch :

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

Nu är if uttalande är ett helt annat odjur. Det är en kontrollsats i MySQL-procedurer . Utlåtandeformuläret ser ut så här:

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; //

Här är en SQL-fil med satsversionen. Det verkar som att Mr Bean inte är allt han har hittat på!

En sista anmärkning:case expression är standard SQL och fungerar i de flesta databaser. if Funktionen är inte standard SQL och fungerar inte i andra databaser, som SQL Server eller PostgreSQL.




  1. COALESCE() Funktion i Oracle

  2. MySQL ROUND() Funktion – Runda ett tal till ett givet antal decimaler

  3. SQL Server :ger NEWID() alltid ett unikt ID?

  4. MySQL-fel:2013, Förlorade anslutningen till MySQL-servern vid "läsning av initialt kommunikationspaket", systemfel:0