สามารถใช้ 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 คำ เป็นต้น