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

Thay thế CASE WHEN bằng hàm IF() trong MySQL

Hàm IF(condition, true_val, false_val) là cách gọn nhẹ thay cho CASE WHEN khi chỉ có 2 nhánh (true/false).

Ví dụ minh họa

Tạo bảng điểm người chơi (có giá trị 0):

CREATE TABLE DemoTable1593 (PlayerScore INT);
INSERT INTO DemoTable1593 VALUES (78), (0), (89), (0);

Hiển thị rỗng cho điểm 0, giữ nguyên điểm > 0:

SELECT IF(PlayerScore = 0, '', PlayerScore) FROM DemoTable1593;

Kết quả

PlayerScore (gốc)Kết quả IF
7878
0(rỗng)
8989
0(rỗng)

CASE WHEN tương đương

SELECT CASE WHEN PlayerScore = 0 THEN '' ELSE PlayerScore END FROM DemoTable1593;

So sánh IF() vs CASE WHEN

Tiêu chíIF()CASE WHEN
Số nhánh2 (true/false)Nhiều (WHEN...THEN...)
Độ phức tạpĐơn giảnPhức tạp
Chuẩn SQLMySQL proprietaryANSI SQL
Lồng nhauKhó đọcDễ đọc hơn
Hiệu năngTương đươngTương đương

Khi nào dùng IF()

  • Logic nhị phân đơn giản: ẩn/hiện, bật/tắt, có/không.
  • Trong SELECT list, WHERE, ORDER BY.
  • Kết hợp với NULLIF/COALESCE: IFNULL(NULLIF(col, ''), 'default').

Khi nào dùng CASE WHEN

  • 3+ nhánh điều kiện.
  • Điều kiện phức tạp (AND/OR, subquery).
  • Cần tương thích cross-database (PostgreSQL, SQL Server, Oracle).

Mở rộng: IF() trong UPDATE

UPDATE DemoTable1593 SET PlayerScore = IF(PlayerScore = 0, 100, PlayerScore);

→ Điểm 0 thành 100, điểm khác giữ nguyên.