Hướng dẫn if trong mysql

Trong bài này mình sẽ hướng dẫn cách sử dụng hàm IF trong MySQL thông qua cú pháp và ví dụ thực tế.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Mô tả

Hàm IF trả về một giá trị nếu một điều kiện đúng hoặc giá trị khác nếu điều kiện sai.

2. Cú pháp

Cú pháp của hàm IF trong MySQL là:

IF[ condition, [value_if_true], [value_if_false] ]

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • condition: Giá trị mà bạn muốn kiểm tra.
  • value_if_true: Không bắt buộc. Đó là giá trị được trả về nếu điều kiện đúng.
  • value_if_false: Không bắt buộc. Đó là giá trị được trả về nếu điều kiện sai.

Lưu ý:

  • Hàm IF có thể trả về một chuỗi hoặc một giá trị số, tùy thuộc vào ngữ cảnh của cách nó được sử dụng.

3. Version

Hàm IF có thể được sử dụng trong các phiên bản sau của MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23.3

4. Ví dụ

mysql> SELECT IF[1 SELECT IF[1 SELECT IF[1 SELECT IF[1 tài
khoản bị khóa
  • Nếu us_level = 1 => admin
  • Nếu us_level = 2 => member
  • Bây giờ ta viết Procedure đăng nhập với yêu cầu như sau:

    • Nếu us_level = 0 => tài khoản bị khóa
    • Nếu us_level = 1 => là admin
    • Nếu us_level = 2=> là member
    • Nếu không tồn tại => đăng nhập sai

    Ý tưởng:

    • Tạo Procedure với tham số truyền vào là gồm usernamepassword thuộc loại IN, còn result thuộc loại OUT để lấy sử dụng. Nếu chưa biết hai khái niệm INOUT vui lòng đọc lại bài tham số trong Procedure.
    • Ta sẽ tạo một biến flag để lưu trữ us_level của người dùng, giá trị khởi tạo của nó là -1. Sau khi thực hiện lệnh SELECT nếu giá trị flag = -1 tức là không tồn tại usernamepassword trong CSDL, ngược lại thì ta sẽ check flag để trả về kết quả tương ứng.

    Bài giải:

    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `checkLogin`$$
    
    CREATE PROCEDURE `checkLogin`[
        IN input_username VARCHAR[255],
        IN input_password VARCHAR[255],
        OUT result VARCHAR[255]
    ]
    BEGIN
    	/*Bien flag luu tru level. Mac dinh la -1*/
    	DECLARE flag INT[11] DEFAULT -1;
    	
    	/*Thuc hien truy van gan level vao bien flag*/
    	SELECT us_level INTO flag FROM members
    	WHERE us_username = input_username AND us_password = MD5[input_password];
    
    	/*Sau khi thuc hien lenh select nay ma ko co du lieu thi
    	  luc nay flag se khong thay doi. Chinh vi the neu flag = -1 tuc la sai thong tin
    	*/
    	IF [flag 

    Chủ Đề