การค้นหาตามรูปแบบ (Pattern Matching) ด้วย REGEXP
MySQL รองรับ Regular Expression ผ่านออปอเรเตอร์ REGEXP (หรือ RLIKE) เพื่อค้นหาแถวที่ค่าคอลัมน์ตรงกับรูปแบบที่กำหนด
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
UserId VARCHAR(100)
);
INSERT INTO DemoTable VALUES
('User-123-G'),
('Us-453-GO'),
('TRUE-908-K');
ข้อมูลในตาราง
+------------+ | UserId | +------------+ | User-123-G | | Us-453-GO | | TRUE-908-K | +------------+ 3 rows in set (0.00 sec)
คำสั่งค้นหารูปแบบ: 4 ตัวอักษร/ตัวเลข - 3 ตัวอักษร/ตัวเลข - 1 ตัวอักษร/ตัวเลข
SELECT * FROM DemoTable
WHERE UserId REGEXP '^[[:alnum:]]{4}-[[:alnum:]]{3}-[[:alnum:]]{1}$';
ผลลัพธ์: ตรงกับ User-123-G และ TRUE-908-K
+------------+ | UserId | +------------+ | User-123-G | | TRUE-908-K | +------------+ 2 rows in set (0.12 sec)
คำอธิบาย Regular Expression:
^เริ่มต้นสตริง[[:alnum:]]{4}ตัวอักษรหรือตัวเลข 4 ตัวติดกัน-ตัวอักษร hyphen ตรงตัว[[:alnum:]]{3}ตัวอักษรหรือตัวเลข 3 ตัว-hyphen อีกตัว[[:alnum:]]{1}ตัวอักษรหรือตัวเลข 1 ตัว$จบสตริง
รูปแบบ Character Class อื่นๆ:
[[:digit:]]หรือ[0-9]ตัวเลข 0-9[[:alpha:]]หรือ[a-zA-Z]ตัวอักษร[[:lower:]],[[:upper:]]ตัวพิมพ์เล็ก/ใหญ่.ตัวอักษรใดๆ (ยกเว้น newline)* + ? {n} {n,} {n,m}Quantifiers
⚠ หมายเหตุ: MySQL 8.0 ใช้ ICU Regex library (รองรับ Unicode ดีกว่า) แทน Henry Spencer Regex ในเวอร์ชันเก่า