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

ลบ URL ที่มีโดเมนเฉพาะใน MySQL ด้วย DELETE และ LIKE

เมื่อต้องการลบแถวที่มี URL含有โดเมนเฉพาะ (เช่น google.com) ให้ใช้คำสั่ง DELETE ร่วมกับเงื่อนไข LIKE และ wildcard %

ตัวอย่างการใช้งาน

สร้างตารางเก็บ URL:

mysql> create table DemoTable1361 (URL text);
mysql> insert into DemoTable1361 values('Https://www.google.com//?id=1');
mysql> insert into DemoTable1361 values('Https://www.facebook.com//?id=2&name=John');
mysql> insert into DemoTable1361 values('Https://www.yahoo.com//?id=3');
mysql> insert into DemoTable1361 values('Https://www.google.com//?id=1');

ข้อมูลก่อนลบ:

+-------------------------------------------+
| URL                                       |
+-------------------------------------------+
| Https://www.google.com//?id=1             |
| Https://www.facebook.com//?id=2&name=John |
| Https://www.yahoo.com//?id=3              |
| Https://www.google.com//?id=1             |
+-------------------------------------------+

คำสั่งลบ URL ที่มี google.com

mysql> delete from DemoTable1361 where URL LIKE '%Https://www.google.com%';

ผลลัพธ์หลังลบ (เหลือ facebook และ yahoo)

+-------------------------------------------+
| URL                                       |
+-------------------------------------------+
| Https://www.facebook.com//?id=2&name=John |
| Https://www.yahoo.com//?id=3              |
+-------------------------------------------+

คำอธิบายเพิ่มเติม:

  • % = wildcard ตรงกับตัวอักษร 0 ตัวขึ้นไป
  • LIKE '%google.com%' จับได้ทั้ง http/https, www/ไม่ www, path ต่างๆ
  • ควรระวัง False positive (เช่น google.com.evil.com) อาจใช้ LIKE '%://google.com/%' หรือ Regex แทน
  • DELETE ไม่มี WHERE จะลบทุกแถว ต้องระวังมาก
  • สำหรับตารางใหญ่ ควรทำเป็น Batch (LIMIT 1000 ต่อรอบ) เพื่อไม่ Lock นานเกินไป