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

MySQL: ตั้งค่าข้อความกำหนดเองด้วย IF Statement และ User-Defined Variable

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

mysql> create table DemoTable2008 ( Value int );
mysql> insert into DemoTable2008 values(10);
mysql> insert into DemoTable2008 values(20);
mysql> insert into DemoTable2008 values(30);
mysql> insert into DemoTable2008 values(-31);
mysql> insert into DemoTable2008 values(-28);

ข้อมูลในตาราง

+-------+
| Value |
+-------+
| 10    |
| 20    |
| 30    |
| -31   |
| -28   |
+-------+

ขั้นตอน: User Variable + IF

  1. คำนวณ SUM แล้วเก็บใน User Variable @value
  2. ใช้ IF() ตรวจสอบเงื่อนไข แล้วแสดงข้อความ
mysql> set @value := (select sum(Value) from DemoTable2008); Query OK, 0 rows affected (0.03 sec)
mysql> select if(@value > 0, 'Value is greater than 0', 'Not greater than') as Result;

ผลลัพธ์

+-------------------------+
| Result                  |
+-------------------------+
| Value is greater than 0 |
+-------------------------+

การคำนวณ

  • SUM = 10 + 20 + 30 + (-31) + (-28) = 1
  • 1 > 0 → TRUE → แสดง 'Value is greater than 0'

User-Defined Variables ใน MySQL

  • ขึ้นต้นด้วย @ (เช่น @value, @my_var)
  • Scope: Session (Connection) - หายเมื่อ Disconnect
  • ไม่ต้อง DECLARE ใช้ได้ทันที
  • Type ถูก Infer อัตโนมัติจากค่าที่ Assign

รูปแบบ CASE WHEN (Standard SQL)

SELECT CASE 
    WHEN @value > 0 THEN 'Value is greater than 0'
    WHEN @value = 0 THEN 'Value is zero'
    ELSE 'Value is negative'
END AS Result;

การใช้งานใน Stored Procedure

CREATE PROCEDURE CheckSumStatus()
BEGIN
    DECLARE total INT;
    SELECT SUM(Value) INTO total FROM DemoTable2008;
    
    IF total > 0 THEN
        SELECT 'Positive' AS Status;
    ELSEIF total = 0 THEN
        SELECT 'Zero' AS Status;
    ELSE
        SELECT 'Negative' AS Status;
    END IF;
END;

ข้อดีของ User Variables

  • ส่งค่าระหว่าง Statements ได้ (SELECT → UPDATE → SELECT)
  • ใช้ใน Prepared Statements ได้
  • Debug ง่าย: SELECT @var; ดูค่าได้ทันที