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

Tìm chuỗi theo tiền tố (prefix) trong MySQL dùng LIKE

Cú pháp

SELECT * FROM bang WHERE cot LIKE 'tien_to%';
  • %: Khớp 0 hoặc nhiều ký tự bất kỳ
  • _: Khớp đúng 1 ký tự bất kỳ

Ví dụ: Tìm tin nhắn bắt đầu bằng "Hi"

Dữ liệu

+--------+-----------------------------+
| UserId | UserMessage                 |
+--------+-----------------------------+
| 1      | Hi Good Morning !!!         |
| 2      | Hey I am busy!!             |
| 3      | Hello what are you doing!!! |
| 4      | Hi I am learning MongoDB!!! |
+--------+-----------------------------+

Truy vấn

mysql> SELECT * FROM findStringWithGivenPrefixDemo WHERE UserMessage LIKE 'Hi%';

Kết quả (2 dòng)

+--------+-----------------------------+
| UserId | UserMessage                 |
+--------+-----------------------------+
| 1      | Hi Good Morning !!!         |
| 4      | Hi I am learning MongoDB!!! |
+--------+-----------------------------+

Các pattern LIKE thường dùng

PatternÝ nghĩaVí dụ khớp
'Hi%'Bắt đầu bằng HiHi, Hi there, Hi123
'%Hi%'Chứa Hi ở đâu đóHi, Say Hi, Hi5
'%Hi'Kết thúc bằng HiHi, SayHi
'H_i'3 ký tự, bắt đầu H, kết thúc iHi, Hoi, H1i
'Hi\_%'Bắt đầu bằng "Hi_" (dùng escape)Hi_test, Hi_123

Hiệu năng & Index

  • LIKE 'prefix%': **Có thể dùng index** (range scan)
  • LIKE '%suffix' hoặc LIKE '%middle%': **Không dùng index** (full scan)
  • MySQL 8.0+: Functional index cho REVERSE(cot) giúp tìm suffix

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 cot LIKE 'Hi%' COLLATE utf8mb4_bin hoặc WHERE BINARY cot LIKE 'Hi%'

Mẹo: Fulltext search (MATCH AGAINST) tốt hơn cho tìm kiếm văn bản phức tạp.