Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Giới hạn LIKE trong MySQL chỉ khớp đầu chuỗi với ký tự cụ thể

Lọc chuỗi bắt đầu bằng ký tự xác định với LIKE

Sử dụng mẫu 'X%' trong LIKE để chỉ khớp các chuỗi bắt đầu bằng ký tự 'X'. Kết hợp OR để khớp nhiều ký tự đầu khác nhau.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (FirstName VARCHAR(40));
mysql> INSERT INTO DemoTable VALUES ('John'), ('Adam'), ('David'), ('Mike'), ('Sam');

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+-----------+
| FirstName |
+-----------+
| John      |
| Adam      |
| David     |
| Mike      |
| Sam       |
+-----------+

3. Truy vấn: Lọc tên bắt đầu bằng 'D' HOẶC 'S'

mysql> SELECT * FROM DemoTable
    WHERE FirstName LIKE 'D%' OR FirstName LIKE 'S%';

4. Kết quả

+-----------+
| FirstName |
+-----------+
| David     |
| Sam       |
+-----------+

Giải thích mẫu LIKE:

  • 'D%': Bắt đầu bằng 'D', theo sau 0 hoặc nhiều ký tự bất kỳ
  • 'S%': Bắt đầu bằng 'S'
  • %: Khớp 0 hoặc nhiều ký tự (wildcard)
  • _: Khớp đúng 1 ký tự (ví dụ: 'D___' = 4 ký tự bắt đầu bằng D)

Cách thay thế với REGEXP:

WHERE FirstName REGEXP '^[DS]'

Tận dụng INDEX (quan trọng):

  • LIKE 'D%' (prefix) → CÓ thể dùng index
  • LIKE '%D' (suffix) → KHÔNG dùng index (full scan)
  • LIKE '%D%' (contains) → KHÔNG dùng index

Case sensitivity: Mặc định case-insensitive (collation _ci). Dùng BINARY để case-sensitive: WHERE BINARY FirstName LIKE 'D%'.