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

ลบแถวใน MySQL เมื่อคอลัมน์สตริงตรงกับเงื่อนไข LIKE

ใช้คำสั่ง DELETE ร่วมกับ WHERE ... LIKE เพื่อลบแถวที่คอลัมน์สตริงมีรูปแบบที่กำหนด (Pattern matching)

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    Name varchar(100) ); 
Query OK, 0 rows affected (0.55 sec)

เพิ่มข้อมูลชื่อต่างๆ

mysql> insert into DemoTable(Name) values('John Smith'); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name) values('Carol Taylor'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name) values('John Doe'); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Name) values('Chris Brown'); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name) values('John Brown'); 
Query OK, 1 row affected (0.19 sec)

แสดงข้อมูลก่อนลบ

mysql> select * from DemoTable;
+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | John Smith   |
| 2  | Carol Taylor |
| 3  | John Doe     |
| 4  | Chris Brown  |
| 5  | John Brown   |
+----+--------------+
5 rows in set (0.00 sec)

คำสั่ง DELETE ลบชื่อที่มี 'ohn' อยู่กลาง (John)

mysql> delete from DemoTable where Name like '%ohn%'; 
Query OK, 3 rows affected (0.16 sec)

ตรวจสอบข้อมูลหลังลบ (เหลือ Carol และ Chris)

mysql> select * from DemoTable;
+----+--------------+
| Id | Name         |
+----+--------------+
| 2  | Carol Taylor |
| 4  | Chris Brown  |
+----+--------------+
2 rows in set (0.00 sec)

คำอธิบาย Wildcard:

  • % = ตรงกับตัวอักษรจำนวนใดก็ได้ (รวม 0 ตัว)
  • _ = ตรงกับตัวอักษรเพียง 1 ตัวเท่านั้น

รูปแบบ LIKE อื่นๆ: 'John%' (ขึ้นต้นด้วย John), '%John' (ลงท้ายด้วย John), '%John%' (มี John อยู่ไหนก็ได้)

ข้อควรระวัง: DELETE ไม่สามารถกู้คืนได้ (ยกเว้นมี Transaction) ควรทดสอบด้วย SELECT ก่อนเสมอ