Regex Pattern สำหรับจับคู่ "EMPLOYEE:100" ตามด้วย Non-digit หรือ End-of-string
ใช้ REGEXP พร้อม Pattern "EMPLOYEE:100([^0-9]|$)" เพื่อจับคู่ข้อความที่ขึ้นต้นด้วย EMPLOYEE:100 และตามด้วย **ไม่ใช่ตัวเลข** หรือ **จบสตริง**
Pattern Breakdown
EMPLOYEE:100- Literal String([^0-9]|$)- กลุ่ม Capture:[^0-9](ไม่ใช่ตัวเลข) **OR**$(End of String)- หมายความว่า: ตรง "EMPLOYEE:100" แล้วจบ หรือ ตรง "EMPLOYEE:100 " (Space) หรือ "EMPLOYEE:100X" (Non-digit)
- ไม่ตรง: "EMPLOYEE:10023432..." (ตามด้วยตัวเลข)
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> CREATE TABLE DemoTable (EmployeeCode VARCHAR(100));
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable VALUES
('EMPLOYEE:100 John Smith'),
('EMPLOYEE:16537 Chris Brown'),
('EMPLOYEE:100 David Miller'),
('EMPLOYEE:100 23432 David Miller');
Query OK, 4 rows affected
ข้อมูลทั้งหมด:
mysql> SELECT * FROM DemoTable;
+---------------------------------+ | EmployeeCode | +---------------------------------+ | EMPLOYEE:100 John Smith | | EMPLOYEE:16537 Chris Brown | | EMPLOYEE:100 David Miller | | EMPLOYEE:100 23432 David Miller | +---------------------------------+ 4 rows in set (0.00 sec)
ค้นหา Pattern EMPLOYEE:100 ตามด้วย Non-digit หรือ End:
mysql> SELECT * FROM DemoTable WHERE EmployeeCode REGEXP "EMPLOYEE:100([^0-9]|$)";
+---------------------------------+ | EmployeeCode | +---------------------------------+ | EMPLOYEE:100 John Smith | | EMPLOYEE:100 David Miller | | EMPLOYEE:100 23432 David Miller | +---------------------------------+ 3 rows in set (0.00 sec)
อธิบายผลลัพธ์:
EMPLOYEE:100 John Smith- ตรง (ตามด้วย Space = Non-digit) ✓EMPLOYEE:16537 Chris Brown- **ไม่ตรง** (เป็น 16537 ไม่ใช่ 100) ✗EMPLOYEE:100 David Miller- ตรง (ตามด้วย Space) ✓EMPLOYEE:100 23432 David Miller- **ตรง!** (ตามด้วย Space ก่อน 23432) ✓
Pattern แบบ Strict: ต้องจบทันทีหรือ Space แล้วจบ (ไม่มีตัวเลขต่อ)
-- จบทันที หรือ Space แล้วจบ หรือ Space แล้ว Non-digit WHERE EmployeeCode REGEXP '^EMPLOYEE:100( |$| [^0-9])'
Regex Meta-characters ใน MySQL (POSIX)
| Pattern | ความหมาย |
|---|---|
^ | เริ่มสตริง |
$ | จบสตริง |
. | ตัวอักษรใดๆ (ยกเว้น Newline) |
[abc] | ตัวอักษรใดตัวหนึ่งในชุด |
[^abc] | ตัวอักษรที่ **ไม่ใช่** ในชุด |
* | 0 หรือมากกว่า |
+ | 1 หรือมากกว่า |
? | 0 หรือ 1 |
{n} | พอดี n ครั้ง |
{n,} | n ครั้งขึ้นไป |
{n,m} | n ถึง m ครั้ง |