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

ตรวจสอบตัวแปร NULL หรือค่าว่างใน MySQL Stored Procedure

ใน 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 เฉพาะ)