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

ลบค่าที่เป็นตัวเลขอย่างเดียวออกจากคอลัมน์ใน MySQL

ใช้ REGEXP เพื่อกรองเฉพาะแถวที่มีตัวอักษรที่ไม่ใช่ตัวเลข (คือ ไม่ใช่ตัวเลขอย่างเดียว)

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

1. สร้างตารางและข้อมูลผสม

mysql> create table DemoTable (ClientCode varchar(100));
mysql> insert into DemoTable values('Chris902'), ('Robert_'), ('903'), ('123_David');

2. Query เลือกเฉพาะที่มีตัวอักษร/อักขระพิเศษ (ไม่ใช่ตัวเลขอย่างเดียว)

mysql> SELECT * FROM DemoTable WHERE ClientCode REGEXP '.*[^0-9].*';

ผลลัพธ์ (ตัด 903 ออก)

+------------+
| ClientCode |
+------------+
| Chris902   |
| Robert_    |
| 123_David  |
+------------+

คำอธิบาย REGEXP Pattern

  • .* - ตัวอักษรใดๆ จำนวน 0 ขึ้นไป
  • [^0-9] - ตัวอักษรที่ ไม่ใช่ 0-9 (Negated Character Class)
  • .* - ตัวอักษรใดๆ จำนวน 0 ขึ้นไป
  • รวมกัน: "มีตัวอักษรอย่างน้อย 1 ตัวที่ไม่ใช่ตัวเลข"

รูปแบบ REGEXP อื่นที่มีประโยชน์

Patternความหมาย
^[0-9]+$เป็นตัวเลขอย่างเดียว (Start to End)
^[^0-9]+$ไม่มีตัวเลขเลย
^[0-9]{3,}$ตัวเลขอย่างน้อย 3 หลัก
^[A-Za-z]+$เป็นตัวอักษรอังกฤษอย่างเดียว

ลบแถวที่เป็นตัวเลขอย่างเดียว

DELETE FROM DemoTable WHERE ClientCode REGEXP '^[0-9]+$';