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

MySQL: ลบเรคคอร์ดที่มีคำเฉพาะพร้อม Underscore (เช่น MONTH_JAN) ด้วย LIKE


คำอธิบาย

ใช้ 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 '\'