Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: IF statement คืนค่าสตริง (Internship/FullTime Employee)


คำอธิบาย

ใช้ IF(condition, true_value, false_value) ใน SELECT เพื่อคืนค่าข้อความตามเงื่อนไข

ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable ( 
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    EmployeeSalary int ); 
Query OK, 0 rows affected (1.68 sec)

การเพิ่มข้อมูล

mysql> insert into DemoTable(EmployeeSalary) values(12000); 
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(EmployeeSalary) values(20000); 
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable(EmployeeSalary) values(11500); 
Query OK, 1 row affected (0.94 sec)
mysql> insert into DemoTable(EmployeeSalary) values(15500); 
Query OK, 1 row affected (0.44 sec)

แสดงข้อมูลทั้งหมด

mysql> select * from DemoTable;

ผลลัพธ์:

+----+----------------+
| Id | EmployeeSalary |
+----+----------------+
| 1  | 12000          |
| 2  | 20000          |
| 3  | 11500          |
| 4  | 15500          |
+----+----------------+
4 rows in set (0.00 sec)

คิวรี่ IF เงื่อนไขเงินเดือน

mysql> select Id, 
if(EmployeeSalary <= 12000, 'Internship Employee', 'FullTime Employee') as status 
from DemoTable;

ผลลัพธ์

+----+---------------------+
| Id | status              |
+----+---------------------+
| 1  | Internship Employee |
| 2  | FullTime Employee   |
| 3  | Internship Employee |
| 4  | FullTime Employee   |
+----+---------------------+
4 rows in set (0.00 sec)

คำอธิบาย

  • เงินเดือน ≤ 12,000 → 'Internship Employee'
  • เงินเดือน > 12,000 → 'FullTime Employee'
  • IF() คืนค่าได้ทั้ง String, Number, Date

CASE WHEN (มาตรฐาน ANSI SQL, ยืดหยุ่นกว่า)

SELECT Id,
CASE 
    WHEN EmployeeSalary <= 12000 THEN 'Internship Employee'
    WHEN EmployeeSalary <= 20000 THEN 'Junior Employee'
    ELSE 'Senior Employee'
END as status
FROM DemoTable;

IF vs CASE

คุณสมบัติIF()CASE WHEN
จำนวนเงื่อนไข1 เงื่อนไข (True/False)หลายเงื่อนไข
StandardMySQL SpecificANSI SQL
Nestedได้ (แต่อ่านยาก)ได้ (อ่านง่าย)