Hệ quản trị CSDL MySQL - Toán tử LIKE & Not Like

Truy xuất dữ liệu dựa theo chuỗi trong MySQL

Toán tử LIKE trong MySQL được sử dụng để so sánh một giá trị với các giá trị tương tự sử dụng toán tử ký tự đại diện (wildcard). Có hai ký tự đại diện được sử dụng kết hợp với toán tử LIKE.

  • Phần trăm (%)
  • Dấu gạch dưới (_)

Dấu phần trăm thể hiện không, một hoặc nhiều ký tự. Dấu gạch dưới đại diện cho một số hoặc một ký tự. Những ký hiệu này có thể được sử dụng trong sự kết hợp.

Cú pháp

Cú pháp cơ bản của ‘%’ và ‘_’ là như sau:

Cú pháp

SELECT *
FROM name_table
WHERE name_column LIKE chuỗi_muốn_tìm;

Ví dụ

Chúng ta có một bảng sinh_vien như sau:

Full_name Gender Age City
Nguyen Thanh Nhan Nam 19 Can Tho
Pham Thu Huong Nu 20 Vinh Long
Nguyen Nhu Ngoc Nu 20 Soc Trang
Bui Thanh Bao Nam 19 Soc Trang
Le My Nhan Nu 22 Can Tho
Tan Thuc Bao Nam 35 An Giang
Trinh Giao Kim Nam 44 Bac Lieu

Ví dụ

Truy xuất những sinh viên có họ tên là "Tan Thuc Bao"

SELECT *
FROM sinh_vien
WHERE Full_name LIKE "Tan Thuc Bao";

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Tan Thuc Bao Nam 35 An Giang

Các ký tự đại diện trong quy tắc tìm kiếm chuỗi

Ký tự đại diện được dùng để đại diện cho một hoặc nhiều ký tự trong một chuỗi.

Dưới đây là danh sách các ký tự đại diện:

Ký tự đại diện Mô tả
% Đại diện cho không hoặc nhiều ký tự
_ Đại kiện cho một ký tự

Một số ví dụ

Chúng ta tiếp tục sử dụng bảng sinh_vien ở phía trên để làm ví dụ.

Ví dụ 1

Truy xuất những sinh viên mà họ tên bắt đầu bằng chữ "Nguyen"

SELECT *
FROM sinh_vien
WHERE Full_name LIKE "Nguyen%";

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Nguyen Thanh Nhan Nam 19 Can Tho
Nguyen Nhu Ngoc Nu 20 Soc Trang

Ví dụ 2

Truy xuất những sinh viên mà họ tên kết thúc bằng chữ "Bao" hoặc "Huong"

SELECT *
FROM sinh_vien
WHERE (Full_name LIKE "%Bao") OR (Full_name LIKE "%Huong");

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Pham Thu Huong Nu 20 Vinh Long
Bui Thanh Bao Nam 19 Soc Trang
Tan Thuc Bao Nam 35 An Giang

Ví dụ 3

Truy xuất những sinh viên mà họ tên có chứa chữ "Thanh"

SELECT *
FROM sinh_vien
WHERE Full_name LIKE "%Thanh%";

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Nguyen Thanh Nhan Nam 19 Can Tho
Bui Thanh Bao Nam 19 Soc Trang

Ví dụ 4

Truy xuất những sinh viên mà trong họ tên có chứa ít nhất 2 chữ T

SELECT *
FROM sinh_vien
WHERE Full_name LIKE "%T%T%";

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Tan Thuc Bao Nam 35 An Giang

Ví dụ 5

Truy xuất những sinh viên mà ký tự thứ 2 trong họ tên là "e"

SELECT *
FROM sinh_vien
WHERE Full_name LIKE "_e%";

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Le My Nhan Nu 22 Can Tho

Ví dụ 6

Truy xuất những sinh viên mà 3 ký tự ở vị trí 345 trong họ tên là "inh" hoặc 2 ký tự gần ký tự cuối là "go"

SELECT *
FROM sinh_vien
WHERE (Full_name LIKE "__inh%") OR (Full_name LIKE "%go_");

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Nguyen Nhu Ngoc Nu 20 Soc Trang
Trinh Giao Kim Nam 44 Bac Lieu

Từ khóa NOT LIKE

Cách sử dụng từ khóa NOT LIKE với các ký tự đại diện cũng giống như cách sử dụng từ khóa LIKE.

Tuy nhiên về mặt ý nghĩa thì từ khóa NOT LIKE trái ngược với từ khóa LIKE.

Từ khóa NOT LIKE có nghĩa là KHÔNG GIỐNG VỚI CHUỖI MUỐN TÌM.

Ví dụ

Truy xuất những sinh viên mà họ tên không có chứa chữ "Thanh"

SELECT *
FROM sinh_vien
WHERE Full_name NOT LIKE "%Thanh%";

Sau khi thực thi, MySQl trả về một bảng kết quả như dưới đây:

Full_name Gender Age City
Pham Thu Huong Nu 20 Vinh Long
Nguyen Nhu Ngoc Nu 20 Soc Trang
Le My Nhan Nu 22 Can Tho
Tan Thuc Bao Nam 35 An Giang
Trinh Giao Kim Nam 44 Bac Lieu