Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - CASE срещу IF оператор срещу функция IF

От ръководството , изглежда като if функцията е просто по-малко гъвкава форма на case изразяване. Например, можете да напишете:

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

И еквивалентът с case :

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

Но case е по-гъвкав. Позволява повече от един клон, като:

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

И може да действа като switch :

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

Сега if изявлението е съвсем различен звяр. Това е контролно изявление в MySQL процедури . Формулярът за изявление изглежда така:

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

Ето SQL Fiddle с версията на изявлението. Изглежда, че мистър Бийн не е всичко, за което е измислен!

Последна бележка:case изразът е стандартен SQL и работи в повечето бази данни. if функцията не е стандартен SQL и няма да работи в други бази данни, като SQL Server или 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. Генериране на сол Crypt() и криптиране на парола, добре изпълнени?

  2. SQL Показване на последния запис в GROUP BY?

  3. MySQL външен ключ при изтриване

  4. Как се подигравате с MySQL (без ORM) в Node.js?

  5. Използване на неулавящи групи в MySQL REGEXP