Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Câu lệnh CASE so với IF so với hàm IF

Từ hướng dẫn sử dụng , nó giống như if hàm chỉ là một dạng kém linh hoạt của case biểu hiện. Ví dụ, bạn có thể viết:

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

Và tương đương với case :

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

Nhưng case linh hoạt hơn. Nó cho phép nhiều nhánh, như:

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

Và nó có thể hoạt động giống như một switch :

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

Bây giờ if tuyên bố là một con thú hoàn toàn khác. Đây là một câu lệnh điều khiển trong thủ tục MySQL . Biểu mẫu tuyên bố có dạng như sau:

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

Đây là SQL Fiddle với phiên bản câu lệnh. Có vẻ như Mr Bean không phải là tất cả những gì anh ấy được tạo ra!

Lưu ý cuối cùng:case biểu thức là SQL tiêu chuẩn và hoạt động trong hầu hết các cơ sở dữ liệu. if hàm không phải là SQL chuẩn và sẽ không hoạt động trong các cơ sở dữ liệu khác, như SQL Server hoặc 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. Tại sao tôi nhận được thông báo 'Không thể ghi nhật ký nhị phân.' trên máy chủ MySQL của tôi?

  2. Hiệu suất Hibernate, JDBC và Java trên tập kết quả vừa và lớn

  3. Cách thực thi mã PHP định kỳ theo cách tự động

  4. Làm cách nào để yêu cầu Trình tối ưu hóa MySQL sử dụng chỉ mục trên bảng dẫn xuất?

  5. EF Core 2.0 Identity - Thêm thuộc tính điều hướng