Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - CASE vs Instrukcja IF vs funkcja IF

Z instrukcji , wygląda jak if funkcja jest po prostu mniej elastyczną formą case wyrażenie. Na przykład możesz napisać:

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

I odpowiednik case :

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

Ale case jest bardziej elastyczny. Pozwala na więcej niż jedną gałąź, na przykład:

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

I może działać jak switch :

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

Teraz if oświadczenie to zupełnie inna bestia. Jest to oświadczenie kontrolne w procedurach MySQL . Formularz oświadczenia wygląda następująco:

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

Oto SQL Fiddle z wersją instrukcji. Wygląda na to, że Jaś Fasola to nie wszystko, za co został stworzony!

Ostatnia uwaga:case wyrażenie jest standardowym SQL i działa w większości baz danych. if funkcja nie jest standardowym SQL i nie będzie działać w innych bazach danych, takich jak SQL Server lub PostgreSQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Napraw „BŁĄD 1222 (21000):Użyte instrukcje SELECT mają inną liczbę kolumn” podczas korzystania z UNION w MySQL

  2. Jak mogę tymczasowo wyłączyć ograniczenie klucza obcego w MySQL?

  3. Doctrine2 w Symfony2:Jak mogę zobaczyć, które wywołanie obiektu prowadzi do zapytania?

  4. Jak uzyskać model ER bazy danych z serwera za pomocą Workbencha?

  5. Jak pobrać wiele wierszy z bazy danych w PHP