Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách dùng hàm IF() trong truy vấn SELECT MySQL

Hàm IF(condition, true_value, false_value) trả về true_value nếu điều kiện đúng, ngược lại false_value. Dùng trực tiếp trong SELECT để tạo cột tính toán có điều kiện.

Cú pháp

SELECT cot1, IF(dieu_kien, gia_tri_dung, gia_tri_sai) AS ten_cot_moi
FROM ten_bang;

Ví dụ minh họa

Tạo bảng và chèn dữ liệu:

CREATE TABLE DemoTable1571 (Id INT, Value INT);
INSERT INTO DemoTable1571 VALUES (101,500), (102,450), (103,300), (104,700);

Phân loại giá trị > 550:

SELECT Value,
       IF(Value > 550, 'Value is greater than 550', 'Value is less than 550') AS Status
FROM DemoTable1571;

Kết quả

ValueStatus
500Value is less than 550
450Value is less than 550
300Value is less than 550
700Value is greater than 550

IF() vs CASE WHEN vs IFNULL() vs COALESCE()

HàmMục đíchVí dụ
IF(cond, a, b)Nhị phân: a nếu true, b nếu falseIF(score>=60, 'Pass', 'Fail')
CASE WHEN ...Đa nhánh, phức tạpCASE WHEN score>=90 THEN 'A' WHEN score>=80 THEN 'B' ELSE 'C' END
IFNULL(a, b)Thay NULL bằng bIFNULL(phone, 'N/A')
COALESCE(a,b,c)Giá trị đầu tiên không NULLCOALESCE(mobile, home, 'N/A')
NULLIF(a, b)Trả về NULL nếu a=bNULLIF(qty, 0)

Lưu ý

  • IF() là MySQL-specific. ANSI SQL dùng CASE.
  • Kiểu trả về: MySQL suy diễn từ true_value và false_value. Nếu khác kiểu, có thể gây chuyển đổi ngầm.
  • Lồng IF: IF(a>10, 'High', IF(a>5, 'Medium', 'Low')) — khó đọc, nên dùng CASE.