sql >> Database teknologi >  >> RDS >> Mysql

MySQL - CASE vs IF Statement vs IF funktion

Fra manualen , det ligner if funktion er blot en mindre fleksibel form for case udtryk. For eksempel kan du skrive:

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

Og det tilsvarende med case :

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

Men case er mere fleksibel. Det tillader mere end én gren, f.eks.:

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

Og den kan fungere som en switch :

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

Nu if statement er et helt andet udyr. Det er en kontrolerklæring i MySQL-procedurer . Opgørelsesformularen ser sådan ud:

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

Her er en SQL Fiddle med sætningsversionen. Det ser ud til, at hr. Bean ikke er alt, hvad han har fundet på at være!

En sidste bemærkning:case expression er standard SQL og fungerer i de fleste databaser. if funktion er ikke standard SQL og vil ikke fungere i andre databaser, såsom SQL Server eller PostgreSQL.




  1. CodeIgniter skifter driver fra mysql --> mysqli

  2. Oprettelse af delvist unikt indeks med sqlalchemy på Postgres

  3. Dynamisk opdateringserklæring med variable kolonnenavne

  4. Forespørgselskryds med activerecord