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

ใช้ MySQL RegExp ดึงข้อมูลที่มีจำนวนคำเฉพาะ

สามารถใช้ Regular Expression (RegExp) ใน MySQL เพื่อกรองข้อมูลที่มีจำนวนคำเท่ากับที่ต้องการได้ โดยใช้รูปแบบ syntax ดังนี้:

select * from yourTableName where yourColumnName regexp '^\w+(\s+\w+){1}$';

คำสั่งด้านบนจะทำงานเมื่อคำแยกด้วยช่องว่าง (space) และต้องการค้นหาข้อมูลที่มี 2 คำพอดี

สร้างตารางและเพิ่มข้อมูลทดสอบ

mysql> create table DemoTable1412 
    -> ( 
    -> Name varchar(40) 
    -> ); 
Query OK, 0 rows affected (0.52 sec)
mysql> insert into DemoTable1412 values('John Adam Carol'); Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1412 values('Mike Sam'); Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1412 values('Chris James Robert'); Query OK, 1 row affected (0.15 sec)

แสดงข้อมูลทั้งหมด:

mysql> select * from DemoTable1412;
+--------------------+
| Name               |
+--------------------+
| John Adam Carol    |
| Mike Sam           |
| Chris James Robert |
+--------------------+
3 rows in set (0.00 sec)

ค้นหาข้อมูลที่มี 2 คำพอดี

mysql> select * from DemoTable1412 where Name regexp '^\w+(\s+\w+){1}$';

ผลลัพธ์:

+----------+
| Name     |
+----------+
| Mike Sam |
+----------+
1 row in set (0.00 sec)

อธิบายรูปแบบ Regular Expression

  • ^ - เริ่มต้นของสตริง
  • \w+ - ตัวอักษรหรือตัวเลข 1 ตัวขึ้นไป (คำแรก)
  • (\s+\w+){1} - ช่องว่างตามด้วยคำอีก 1 คำ (จำนวน 1 ครั้ง = รวม 2 คำ)
  • $ - จบของสตริง

หมายเหตุ: หากต้องการค้นหาจำนวนคำอื่น ๆ ให้เปลี่ยนตัวเลขใน {1} เช่น {2} สำหรับ 3 คำ {3} สำหรับ 4 คำ เป็นต้น