คำอธิบาย
ใช้ LIKE พร้อม Wildcard % เพื่อค้นหาและลบเรคคอร์ดที่มีคำเฉพาะ (Pattern) อยู่ในคอลัมน์
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(40),
BornMonth varchar(40) );
Query OK, 0 rows affected (0.47 sec)
การเพิ่มข้อมูล
mysql> insert into DemoTable(Name, BornMonth) values('Chris', 'MONTH_DEC');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name, BornMonth) values('Bob', 'MONTH_JAN');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name, BornMonth) values('Mike', 'MONTH_FEB');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name, BornMonth) values('David', 'MONTH_JAN');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name, BornMonth) values('Carol', 'MONTH_MARCH');
Query OK, 1 row affected (0.16 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์:
+----+-------+-------------+ | Id | Name | BornMonth | +----+-------+-------------+ | 1 | Chris | MONTH_DEC | | 2 | Bob | MONTH_JAN | | 3 | Mike | MONTH_FEB | | 4 | David | MONTH_JAN | | 5 | Carol | MONTH_MARCH | +----+-------+-------------+ 5 rows in set (0.00 sec)
คิวรี่ DELETE ด้วย LIKE
mysql> delete from DemoTable where BornMonth LIKE '%MONTH_JAN%'; Query OK, 2 rows affected (0.18 sec)
ตรวจสอบข้อมูลหลังลบ
mysql> select * from DemoTable;
ผลลัพธ์:
+----+-------+-------------+ | Id | Name | BornMonth | +----+-------+-------------+ | 1 | Chris | MONTH_DEC | | 3 | Mike | MONTH_FEB | | 5 | Carol | MONTH_MARCH | +----+-------+-------------+ 3 rows in set (0.00 sec)
คำอธิบาย
- %MONTH_JAN%: ตรงกับสตริงที่มี 'MONTH_JAN' อยู่ตรงไหนก็ได้ (นำหน้า/ท้าย/กลาง)
- ลบได้ 2 เรคคอร์ด (Bob และ David)
- Underscore (_) ใน LIKE เป็น Wildcard ตัวอักษรเดี่ยว แต่ในที่นี้เป็นตัวอักษรธรรมดา เพราะไม่ได้ Escape
กรณี Underscore เป็น Wildcard
หากต้องการค้นหา Underscore จริง ให้ Escape:
WHERE BornMonth LIKE '%MONTH\_JAN%' ESCAPE '\'