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

Sử dụng ký tự đại diện % (wildcard) đúng cách trong MySQL

Toán tử LIKE và ký tự đại diện % trong MySQL

Ký tự % khớp với 0 hoặc nhiều ký tự bất kỳ. Ký tự _ khớp với đúng 1 ký tự.

Cú pháp

SELECT * FROM tenBang WHERE cot LIKE 'mau%';

Ví dụ minh họa

Bảng SearchDemo:

CREATE TABLE SearchDemo (Name VARCHAR(100), LoginId VARCHAR(100));
INSERT INTO SearchDemo VALUES
('John','1_1'), ('Johnson','1_2'), ('Carol','2_1'),
('Bob','11_1'), ('Sam','11_2'), ('Mike','21_1');

Tìm LoginId bắt đầu bằng '2':

SELECT * FROM SearchDemo WHERE LoginId LIKE '2%';

Kết quả

+-------+---------+
| Name  | LoginId |
+-------+---------+
| Carol | 2_1     |
| Mike  | 21_1    |
+-------+---------+

Các mẫu phổ biến

MẫuÝ nghĩaVí dụ khớp
'abc%'Bắt đầu bằng abcabc, abc123, abc_def
'%abc'Kết thúc bằng abcabc, 123abc, x_abc
'%abc%'Chứa abc ở bất kỳ đâuabc, xabcy, 1abc2
'a_c'3 ký tự, giữa là bất kỳabc, a1c, a-c
'a__c'4 ký tự, 2 ký tự giữaabcd, a12c

Hiệu năng & Index

  • LIKE 'abc%' (prefix) có thể dùng index.
  • LIKE '%abc' hoặc LIKE '%abc%' không dùng index (full table scan).
  • Cần tìm kiếm chứa chuỗi trung gian → dùng Full-Text Search (FULLTEXT INDEX + MATCH...AGAINST).

Escape ký tự đặc biệt

Muốn tìm ký tự % hoặc _ thực sự:

WHERE cot LIKE '%\%%' ESCAPE '\'  -- tìm chuỗi chứa %
WHERE cot LIKE '%\_%' ESCAPE '\'  -- tìm chuỗi chứa _