การค้นหารูปแบบข้อความด้วย Regular Expression (REGEXP) ใน MySQL
ใช้ REGEXP (หรือ RLIKE) เพื่อค้นหาข้อมูลที่ตรงตามรูปแบบ Regular Expression เช่น ตัวเลข 2 หลักตามด้วยตัวอักษรใหญ่ 1 ตัว
รูปแบบคำสั่ง
SELECT * FROM table_name WHERE column_name REGEXP 'pattern';
ตัวอย่าง: ค้นหา ID ที่เป็นตัวเลข 2 หลักตามด้วยตัวอักษร A-Z 1 ตัว
1. สร้างตารางและเพิ่มข้อมูล
CREATE TABLE DemoTable (Id VARCHAR(50));
INSERT INTO DemoTable VALUES ('John123'), ('123Chris'), ('99Bob'), ('19David'), ('99S'), ('10M');
2. ดูข้อมูลทั้งหมด
SELECT * FROM DemoTable;
ผลลัพธ์:
+----------+
| Id |
+----------+
| John123 |
| 123Chris |
| 99Bob |
| 19David |
| 99S |
| 10M |
+----------+
3. ค้นหารูปแบบ: ^[0-9][0-9][A-Z]$ (ตัวเลข 2 หลัก + ตัวอักษรใหญ่ 1 ตัว)
SELECT * FROM DemoTable WHERE Id REGEXP '^[0-9][0-9][A-Z]$';
ผลลัพธ์:
+------+
| Id |
+------+
| 99S |
| 10M |
+------+
อธิบาย Regular Expression Pattern
| Pattern | ความหมาย | |
|---|---|---|
^ | จุดเริ่มต้นของสตริง | |
[0-9] | ตัวเลข 0-9 (1 ตัว) | |
[0-9][0-9] | ตัวเลข 2 ตัวติดกัน | |
[A-Z] | ตัวอักษรใหญ่ A-Z (1 ตัว) | |
$ | จุดสิ้นสุดของสตริง | |
^[0-9][0-9][A-Z]$ | สตริงทั้งหมด = ตัวเลข 2 หลัก + ตัวอักษร 1 ตัว |
| Pattern | ความหมาย | ตัวอย่าง Match |
|---|---|---|
^[0-9]+$ | เฉพาะตัวเลข (1 หลักขึ้นไป) | '123', '0' |
^[A-Za-z]+$ | เฉพาะตัวอักษร | 'abc', 'Hello' |
^[0-9]{3}-[0-9]{4}$ | รูปแบบ โทรศัพท์ 3-4 หลัก | '123-4567' |
^(.+)@(.+)\.(.+)$ | Email แบบง่าย | 'a@b.com' |
^[0-9]{2}[A-Z]{2}$ | ตัวเลข 2 + ตัวอักษร 2 | '99TH', '10UK' |