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

Tìm kiếm từ khóa (Keyword Search) trong MySQL với LIKE

Tìm kiếm từ khóa cơ bản với toán tử LIKE

Toán tử LIKE kết hợp ký tự đại diện % (khớp 0 hoặc nhiều ký tự) và _ (khớp đúng 1 ký tự) cho phép tìm kiếm mẫu chuỗi.

Cú pháp

SELECT * FROM tenBang
WHERE cot LIKE '%tuKhoa%'
   OR cot LIKE '%tuKhoaKhac%';

Ví dụ minh họa

Tạo bảng KeywordSearchDemo:

CREATE TABLE KeywordSearchDemo (
    StudentId INT,
    StudentName VARCHAR(100)
);

Chèn dữ liệu:

INSERT INTO KeywordSearchDemo VALUES
(100, 'Adam John'), (101, 'John Smith'), (103, 'John Taylor'),
(104, 'Carol Taylor'), (105, 'Maria Garcia'), (106, 'James Smith'), (110, 'Mike Brown');

Tìm tên chứa "John" HOẶC "Taylor":

SELECT StudentName FROM KeywordSearchDemo
WHERE StudentName LIKE '%John%' OR StudentName LIKE '%Taylor%';

Kết quả

+--------------+
| StudentName  |
+--------------+
| Adam John    |
| John Smith   |
| John Taylor  |
| Carol Taylor |
+--------------+

Mở rộng: Tìm kiếm toàn văn bản (Full-Text Search)

Với dữ liệu lớn, LIKE '%...%' quét toàn bảng (chậm). MySQL hỗ trợ Full-Text Index:

ALTER TABLE tenBang ADD FULLTEXT(cotVanBan);
SELECT * FROM tenBang WHERE MATCH(cotVanBan) AGAINST('tu khoa' IN NATURAL LANGUAGE MODE);

Ưu điểm: Nhanh, hỗ trợ xếp hạng độ liên quan, tìm từ gốc (stemming), boolean mode (+ - *).

Lưu ý LIKE

  • %abc%: Không dùng index (full table scan).
  • abc%: Có thể dùng index (prefix).
  • Phân biệt chữ hoa/thường phụ thuộc collation (mặc định không phân biệt).