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

ตรวจสอบตัวแปร Local Variable ว่าเป็น NULL ใน MySQL Stored Procedure ด้วย COALESCE()

ภาพรวม

ใน Stored Procedure ตัวแปร Local (DECLARE) ที่ไม่ได้กำหนดค่า จะมีค่าเป็น NULL ใช้ COALESCE() เพื่อตรวจสอบและแทนค่า Default

ฟังก์ชัน COALESCE()

COALESCE(value1, value2, ..., default_value)
-- คืนค่าแรกที่ไม่ใช่ NULL

ตัวอย่าง Stored Procedure

1. สร้าง Procedure

DELIMITER //
CREATE PROCEDURE local_VariableDemo()
BEGIN
    DECLARE value1 INT;
    DECLARE value2 INT;
    
    -- แสดงค่าเริ่มต้น (NULL)
    SELECT value1, value2;
    
    -- ใช้ COALESCE แทน NULL ด้วย 0 แล้วบวกกัน
    SELECT CONCAT('After checking local variable is null the sum = ', 
           COALESCE(value1, 0) + COALESCE(value2, 0)) AS Result;
END //
DELIMITER ;

2. เรียกใช้ Procedure

CALL local_VariableDemo();

3. ผลลัพธ์

+--------+--------+
| value1 | value2 |
+--------+--------+
| NULL   | NULL   |
+--------+--------+

+------------------------------------------------------------------+
| Result                                                           |
+------------------------------------------------------------------+
| After checking local variable is null the sum is = 0             |
+------------------------------------------------------------------+

การประยุกต์ใช้จริง

1. ตั้งค่า Default ให้ Parameter

CREATE PROCEDURE GetUser(IN userId INT, IN limitRows INT)
BEGIN
    SET limitRows = COALESCE(limitRows, 10);  -- Default 10
    SELECT * FROM Users WHERE Id = userId LIMIT limitRows;
END;

2. คำนวณค่ารวม โดยถือ NULL เป็น 0

SELECT 
    COALESCE(SUM(Price), 0) AS TotalRevenue,
    COALESCE(AVG(Rating), 0) AS AvgRating
FROM Orders;

3. เลือกคอลัมน์สำรอง (Fallback)

SELECT COALESCE(Phone, Email, 'No Contact') AS ContactInfo
FROM Customers;

ฟังก์ชันเปรียบเทียบ

ฟังก์ชันใช้เมื่อไหร่
COALESCE(a, b, c...)คืนค่าแรกที่ไม่ NULL (หลายค่า)
IFNULL(a, b)MySQL เฉพาะ 2 ค่า (a NULL → b)
IF(condition, a, b)เงื่อนไขแบบกำหนดเอง
CASE WHEN ... THEN ... ELSE ... ENDเงื่อนไขซับซ้อนหลายกรณี

ข้อควรระวัง

  • COALESCE เป็น ANSI SQL Standard รองรับหลาย Database
  • IFNULL เป็น MySQL Specific ใช้ได้แค่ 2 Argument
  • ตัวแปร Local ใน Procedure ต้อง DECLARE ก่อนใช้

สรุป

ใช้ COALESCE(variable, default_value) ตรวจสอบและแทนค่า NULL ใน Stored Procedure ทำให้โค้ดสะอาด ไม่ต้องเขียน IF/ELSE ยาว