สามารถใช้ IF ... NOT IN ... THEN ... ELSE ... END IF ภายใน Stored Procedure ได้
ไวยากรณ์
IF (yourVariableName NOT IN (value1, value2, ... N)) THEN
statement1;
ELSE
statement2;
END IF;
ตัวอย่างสร้าง Procedure
mysql> DELIMITER //
mysql> CREATE PROCEDURE IF_NOT_INDemo(IN value INT)
-> BEGIN
-> IF (value NOT IN (10,20,30)) THEN
-> SELECT "Value Not Found";
-> ELSE
-> SELECT "Value Found";
-> END IF;
-> END
-> //
Query OK, 0 rows affected (0.25 sec)
mysql> DELIMITER ;
ทดสอบเรียกใช้งาน
Case 1: พบค่า (10)
mysql> CALL IF_NOT_INDemo(10);
+-------------+ | Value Found | +-------------+ | Value Found | +-------------+
Case 2: ไม่พบค่า (100)
mysql> CALL IF_NOT_INDemo(100);
+-----------------+ | Value Not Found | +-----------------+ | Value Not Found | +-----------------+
ข้อควรระวัง
- ใช้
DELIMITERเปลี่ยนตัวคั่นคำสั่งชั่วคราวขณะสร้าง Procedure NOT INจะคืนค่าNULLหากรายการมีค่า NULL อยู่ -> ใช้NOT EXISTSหรือตรวจสอบ NULL ก่อนหน้าที่ดีกว่า- MySQL 8.0+ รองรับ
NOT INกับ Subquery ได้ดีขึ้น