คำสั่งหลัก
ใช้ REGEXP BINARY เพื่อ case-sensitive regex matching
รูปแบบคำสั่ง
SELECT * FROM yourTableName
WHERE yourColumnName REGEXP BINARY '[A-Z]{2}';
ตัวอย่างครบถ้วน
1. สร้างตาราง
mysql> create table FindCapitalLettrsDemo
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentFirstName varchar(20)
-> );
Query OK, 0 rows affected (0.52 sec)
2. เพิ่มข้อมูลผสม case
mysql> insert into FindCapitalLettrsDemo(StudentFirstName) values('JOHN');
Query OK, 1 row affected (0.24 sec)
mysql> insert into FindCapitalLettrsDemo(StudentFirstName) values('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> insert into FindCapitalLettrsDemo(StudentFirstName) values('bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into FindCapitalLettrsDemo(StudentFirstName) values('carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into FindCapitalLettrsDemo(StudentFirstName) values('John');
Query OK, 1 row affected (0.14 sec)
3. ดูข้อมูลทั้งหมด
mysql> select * from FindCapitalLettrsDemo;
+-----------+------------------+ | StudentId | StudentFirstName | +-----------+------------------+ | 1 | JOHN | | 2 | Carol | | 3 | bob | | 4 | carol | | 5 | John | +-----------+------------------+
4. ค้นหาชื่อที่มีตัวพิมพ์ใหญ่ติดกัน 2 ตัวขึ้นไป
mysql> select * from FindCapitalLettrsDemo
-> where StudentFirstName REGEXP BINARY '[A-Z]{2}';
+-----------+------------------+ | StudentId | StudentFirstName | +-----------+------------------+ | 1 | JOHN | +-----------+------------------+
เฉพาะ 'JOHN' ที่มีตัวพิมพ์ใหญ่ติดกัน 4 ตัว (J,O,H,N)
Regex Patterns สำหรับ Capital Letters
| Pattern | ความหมาย | Match ตัวอย่าง |
|---|---|---|
| [A-Z] | มีตัวพิมพ์ใหญ่อย่างน้อย 1 ตัว | John, JOHN, jOhn |
| [A-Z]{2,} | มีตัวพิมพ์ใหญ่ติดกัน 2+ ตัว | JOHN, McDonald |
| ^[A-Z] | ขึ้นต้นด้วยตัวพิมพ์ใหญ่ | John, Carol |
| ^[A-Z]+$ | ทั้งหมดเป็นตัวพิมพ์ใหญ่ | JOHN, USA |
| [A-Z][a-z]+ | ขึ้นต้นใหญ่ ตามด้วยเล็ก (Title Case) | John, Carol |
CASE SENSITIVE vs INSENSITIVE
REGEXP BINARY- case sensitive (แยกใหญ่/เล็ก)REGEXP- case insensitive (default, ขึ้นกับ collation)COLLATE utf8mb4_bin- บังคับ case sensitive ใน comparison ทุกชนิด
Performance Note
REGEXP ไม่ใช้ index ได้ (full table scan) ตารางใหญ่ควร:
- เพิ่ม computed column / generated column เก็บ flag
- ใช้ Full-text search หรือ application-level filtering
- MySQL 8.0: ใช้ REGEXP_REPLACE() แทน (เร็วกว่า)