ใน MySQL Stored Procedure สามารถตรวจสอบว่าตัวแปรเป็น NULL หรือสตริงว่าง ('') ได้โดยใช้คำสั่ง IF ร่วมกับเงื่อนไข IS NULL และ = ''
Syntax
IF variable IS NULL OR variable = '' THEN
-- ทำเมื่อ NULL หรือว่าง
ELSE
-- ทำเมื่อมีค่า
END IF;
ตัวอย่างการใช้งาน
1. สร้าง Stored Procedure ตรวจสอบ NULL/ว่าง
mysql> delimiter //
mysql> create procedure checkingForNullDemo(Name varchar(20))
-> begin
-> if Name is NULL OR Name = '' then
-> select 'Adam Smith';
-> else
-> select Name;
-> end if;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
2. กรณีที่ 1: ส่งค่า NULL
mysql> call checkingForNullDemo(NULL);
ผลลัพธ์:
+------------+ | Adam Smith | +------------+ | Adam Smith | +------------+ 1 row in set (0.00 sec)
3. กรณีที่ 2: ส่งค่าที่มีข้อมูล
mysql> call checkingForNullDemo('John Doe');
ผลลัพธ์:
+----------+ | Name | +----------+ | John Doe | +----------+ 1 row in set (0.00 sec)
เทคนิคเพิ่มเติม: ใช้ COALESCE() และ IFNULL()
COALESCE() - คืนค่าแรกที่ไม่ใช่ NULL
SELECT COALESCE(Name, 'Default Name') FROM table_name;
IFNULL() - เฉพาะ MySQL คืนค่าที่ 2 ถ้าตัวแรกเป็น NULL
SELECT IFNULL(Name, 'Default Name') FROM table_name;
NULLIF() - คืนค่า NULL ถ้าค่าเท่ากัน
SELECT NULLIF(Name, '') FROM table_name; -- คืน NULL ถ้า Name เป็นสตริงว่าง
ตารางเปรียบเทียบ
| ฟังก์ชัน | รองรับ NULL | รองรับ Empty String | จำนวนพารามิเตอร์ |
|---|---|---|---|
| IFNULL() | ✓ | ✗ | 2 |
| COALESCE() | ✓ | ✗ | 2+ |
| IF(col IS NULL OR col='', ...) | ✓ | ✓ | N/A (Statement) |
สรุป: ใน Stored Procedure ใช้ IF var IS NULL OR var = '' THEN เพื่อตรวจสอบทั้ง NULL และค่าว่างพร้อมกัน สำหรับ Query ธรรมดา แนะนำ COALESCE() (มาตรฐาน ANSI SQL) หรือ IFNULL() (MySQL เฉพาะ)