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 Show 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 2. Cú phápCú pháp của hàm IF( condition, [value_if_true], [value_if_false] ) Trong đó: Bài viết này được đăng tại [free tuts .net]
Lưu ý:
3. VersionHàm
4. Ví dụmysql> SELECT IF(1<2, 'dung', 'sai'); Ket qua: 'dung' mysql> SELECT IF(1<2, 1, 2); Ket qua: 1 Trong bài này mình sẽ hướng dẫn cách sử dụng hàm 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 2. Cú phápCú pháp của
hàm IF( condition, [value_if_true], [value_if_false] ) Trong đó: Bài viết này được đăng tại [free tuts .net]
Lưu ý:
3. VersionHàm
4. Ví dụmysql> SELECT IF(1<2, 'dung', 'sai'); Ket qua: 'dung' mysql> SELECT IF(1<2, 1, 2); Ket qua: 1 Khi làm việc với Stored Procedure thì bạn không thể thiếu hàm Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Tới đây chắc hẳn bạn thấy 1. Tìm hiểu mệnh đề if else trong MySqlMệnh đề if cho phép bạn tạo luồng xử lý rẻ nhánh, nếu đúng thì thực thì và ngược lại mệnh đề sai thì nó sẽ không thực thi. Thông thường chúng ta kết hợp các toán tử, toán hạng và biến trong mysql để tạo ra các mệnh đề đúng sai trong điều kiện của lệnh Cú pháp mệnh đề if - else trong MYSQL như sau: Bài viết này được đăng tại [free tuts .net] IF if_expression THEN commands ELSEIF elseif_expression THEN commands ELSE commands END IF; Luồng đi như sau:
Lưu ý với bạn là ta có thể có nhiều IFELSE chứ không phải chỉ 1 cái như trong ví dụ trên. 2. Ví dụ mềnh đề if else trong MySql Stored ProcedureBây giờ ta sẽ làm một ví dụ cho bạn dễ hiểu hơn. Trước tiên ta cần tạo một bảng thành viên và insert một số thông tin Username và Password. Bạn chạy lệnh sau để tạo bảng: CREATE TABLE IF NOT EXISTS `members` ( `us_id` INT(11) NOT NULL AUTO_INCREMENT, `us_username` VARCHAR(30) COLLATE utf8_unicode_ci DEFAULT NULL, `us_password` VARCHAR(32) COLLATE utf8_unicode_ci DEFAULT NULL, `us_level` TINYINT(1) DEFAULT '0', PRIMARY KEY (`us_id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ; -- -- Contenu de la table `members` -- INSERT INTO `members` (`us_id`, `us_username`, `us_password`, `us_level`) VALUES (1, 'admin', '57e34a1be668ebd6e40d430806beb099', 1), (2, 'member', '57e34a1be668ebd6e40d430806beb099', 2), (3, 'banded', '57e34a1be668ebd6e40d430806beb099', 0); Trong bảng này ta cần chú ý đến field
Bây giờ ta viết Procedure đăng nhập với yêu cầu như sau:
Ý tưở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 <= 0) THEN SET result = 'Thong tin dang nhap sai'; ELSEIF (flag = 0) THEN SET result = 'Tai khoan bi khoa'; ELSEIF (flag = 1) THEN SET result = 'Tai khoan admin'; ELSE SET result = 'Tai khoan member'; END IF; END$$ DELIMITER ; Sử dụng: CALL checkLogin('admin', 'vancuong', @result); SELECT @result; -- hoặc CALL checkLogin('member', 'vancuong', @result); SELECT @result; -- hoặc CALL checkLogin('banded', 'vancuong', @result); SELECT @result; Bạn hãy chạy lên và xem thành quả nhé. Lời kết:Câu lệnh |