sql >> Database >  >> RDS >> Mysql

MySQL - CASE vs IF Statement vs IF functie

Uit de handleiding , lijkt het op de if functie is gewoon een minder flexibele vorm van de case uitdrukking. U kunt bijvoorbeeld schrijven:

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

En het equivalent met case :

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

Maar case is flexibeler. Het staat meer dan één vertakking toe, zoals:

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

En het kan werken als een switch :

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

Nu de if verklaring is een heel ander beest. Het is een controleverklaring in MySQL-procedures . Het verklaringsformulier ziet er als volgt uit:

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

Hier is een SQL Fiddle met de instructieversie. Het lijkt erop dat Mr Bean niet alles is wat hij verzonnen heeft!

Een laatste opmerking:de case expression is standaard SQL en werkt in de meeste databases. De if functie is geen standaard SQL en werkt niet in andere databases, zoals SQL Server of PostgreSQL.




  1. OAuth gebruiken om uw ODBC-verbinding met Salesforce.com te verifiëren

  2. Door komma's gescheiden waarden in kolommen splitsen naar meerdere rijen in Sql Server

  3. Gebruik SERVERPROPERTY() om serverinformatie op te halen in SQL Server

  4. Barman Cloud – Deel 2:Cloudback-up