Giới thiệu
Để tìm kiếm các bản ghi bắt đầu bằng một tập hợp ký tự cụ thể (ví dụ: A, B hoặc C), MySQL cung cấp toán tử REGEXP cho phép sử dụng biểu thức chính quy.
Cú pháp
SELECT * FROM yourTableName WHERE yourColumnName REGEXP '^[ABC]';
^: Khớp bắt đầu chuỗi.[ABC]: Khớp bất kỳ ký tự nào trong tập {A, B, C}.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
Name VARCHAR(100)
);
mysql> INSERT INTO DemoTable VALUES
('Chris'), ('David'), ('Mike'), ('Bob'), ('Mike'), ('Adam');
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+-------+ | Name | +-------+ | Chris | | David | | Mike | | Bob | | Mike | | Adam | +-------+
Truy vấn REGEXP
mysql> SELECT * FROM DemoTable WHERE Name REGEXP '^[ABC]';
Kết quả
+-------+ | Name | +-------+ | Chris | | Bob | | Adam | +-------+
Mở rộng
- Tìm tên bắt đầu bằng A-Z:
REGEXP '^[A-Z]' - Tìm tên kết thúc bằng 'son':
REGEXP 'son$' - Không phân biệt chữ hoa/thường: MySQL REGEXP mặc định không phân biệt (case-insensitive) trừ khi dùng
BINARY.
Lưu ý hiệu năng: REGEXP không sử dụng index thông thường. Với bảng lớn, cân nhắc dùng LIKE 'A%' hoặc LIKE 'B%' kết hợp OR, hoặc tạo fulltext index.