Để tìm một từ chính xác trong chuỗi (không khớp một phần của từ khác), MySQL hỗ trợ biểu thức chính quy (Regular Expression) qua toán tử REGEXP. Mẫu regex '(^|[[:space:]])tu_khoa([[:space:]]|$)' đảm bảo từ khóa được bao quanh bởi đầu chuỗi, khoảng trắng hoặc cuối chuỗi.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (Title TEXT);
mysql> INSERT INTO DemoTable VALUES
('This is the Introduction to Java'),
('This is the Introduction to MongoDB'),
('This is the Introduction to MySQL');
Dữ liệu
mysql> SELECT * FROM DemoTable;
+-------------------------------------+
| Title |
+-------------------------------------+
| This is the Introduction to Java |
| This is the Introduction to MongoDB |
| This is the Introduction to MySQL |
+-------------------------------------+
Tìm chính xác từ 'MySQL'
mysql> SELECT * FROM DemoTable
WHERE Title REGEXP '(^|[[:space:]])MySQL([[:space:]]|$)';
Kết quả
+-----------------------------------+
| Title |
+-----------------------------------+
| This is the Introduction to MySQL |
+-----------------------------------+
Giải thích Regex
(^|[[:space:]]): Đầu chuỗi (^) HOẶC ký tự khoảng trắng ([[:space:]]bao gồm space, tab, newline).MySQL: Từ khóa cần tìm (phân biệt chữ hoa/thường tùy collation, mặc định không phân biệt).([[:space:]]|$): Ký tự khoảng trắng HOẶC cuối chuỗi ($).
Lưu ý
REGEXPkhông sử dụng index (full table scan). Với bảng lớn, cân nhắc Fulltext Search (MySQL 5.6+).- Để không phân biệt chữ hoa/thường: MySQL mặc định không phân biệt (collation _ci). Muốn phân biệt:
REGEXP BINARYhoặc dùng collation _cs. - Từ MySQL 8.0, có thể dùng
REGEXP_LIKE()chuẩn SQL.
Mở rộng: Để tìm từ có chứa ký tự đặc biệt regex (., *, ?, +, ...), cần escape bằng dấu backslash \\.