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

Tìm tên bắt đầu bằng chữ A trong MySQL?

Giải pháp: Toán tử LIKE

Sử dụng LIKE 'A%' để tìm chuỗi bắt đầu bằng 'A'. Ký tự % đại diện cho bất kỳ chuỗi nào (kể cả rỗng).

Ví dụ minh họa

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable (
    StudentName VARCHAR(100)
);

mysql> INSERT INTO DemoTable VALUES('John Smith');
mysql> INSERT INTO DemoTable VALUES('Adam Smith');
mysql> INSERT INTO DemoTable VALUES('Aaron Taylor');
mysql> INSERT INTO DemoTable VALUES('Chris Brown');

Truy vấn

mysql> SELECT * FROM DemoTable 
    -> WHERE StudentName LIKE 'A%';

Kết quả

+--------------+
| StudentName  |
+--------------+
| Adam Smith   |
| Aaron Taylor |
+--------------+

Các pattern LIKE phổ biến

PatternÝ nghĩaVí dụ khớp
'A%'Bắt đầu bằng AAdam, Apple, A
'%A'Kết thúc bằng AAnna, Maria, A
'%A%'Chứa A ở bất kỳ vị tríAdam, Maria, Banana
'A_'Bắt đầu A, đúng 2 ký tựAl, Am, A1
'A__%'Bắt đầu A, ít nhất 3 ký tựAdam, Apple
'[A-C]%'Bắt đầu A, B, hoặc C (REGEXP)Adam, Bob, Cat

Phân biệt chữ hoa/thường

  • Mặc định: Không phân biệt (case-insensitive) với collation *_ci
  • Phân biệt: WHERE StudentName LIKE 'A%' COLLATE utf8mb4_bin
  • Hoặc: WHERE BINARY StudentName LIKE 'A%'

Hiệu năng & Index

  • LIKE 'A%' (prefix) → Sử dụng được index
  • LIKE '%A' hoặc LIKE '%A%' → Không dùng index (full table scan)
  • Cần index trên cột: CREATE INDEX idx_name ON DemoTable(StudentName)

Mở rộng: REGEXP cho phức tạp hơn

-- Bắt đầu bằng A hoặc B
WHERE StudentName REGEXP '^[AB]'

-- Bắt đầu bằng chữ cái
WHERE StudentName REGEXP '^[A-Za-z]'

-- Bắt đầu bằng A, theo sau là 2-5 ký tự bất kỳ
WHERE StudentName REGEXP '^A.{2,5}'