Hướng dẫn cách dùng các ký tự đại diện trong MySQL: Like, NOT Like, Escape, ( % ), ( _ )

G-LEARNING
G-LEARNING
May 09 2020

Ký tự đại diện là gì?

Ký tự đại diện là các ký tự giúp tìm kiếm dữ liệu phù hợp với những tiêu chí phức tạp. Ký tự đại diện được sử dụng cùng với toán tử so sánh LIKE hoặc NOT LIKE.

Tại sao chúng ta cần sử dụng ký tự đại diện?

Nếu bạn quen với việc sử dụng SQL, bạn có thể nghĩ rằng bạn có thể tìm kiếm bất kì dữ liệu phức tạp nào bằng cách sử dụng câu lệnh SELECT và mệnh đề WHERE. Vậy tại sao lại phải dùng ký tự đại diện?

Trước khi trả lời câu hỏi này, chúng ta hãy xem xét một ví dụ. Giả sử rằng bộ phận marketing của thư viện video Myflix đã thực hiện các chương trình khuyến mãi tiếp thị tại thành phố Texas và muốn lấy một số phản hồi từ các thành viên đã đăng ký tại Texas. Bạn có thể sử dụng câu lệnh SELECT sau cùng với mệnh đề WHERE để có được thông tin mong muốn:

Như bạn có thể thấy trong câu truy vấn trên, mệnh đề WHERE trở nên phức tạp. Bằng cách sử dụng ký tự đại diện, chúng ta có thể đơn giản hóa câu lệnh như sau :

Nói tóm lại, ký tự đại diện cho phép chúng ta phát triển sức mạnh của công cụ tìm kiếm vào ứng dụng điều khiển dữ liệu của mình. 

Các loại ký tự đại diện

Phần trăm %

Ký tự % được sử dụng để chỉ định một mẫu có 0 hoặc nhiều ký tự hơn. Nó có cú pháp cơ bản sau:

Trong đó:

  • “SELECT statement…” là câu lệnh SELECT SQL chuẩn 
  • “WHERE” là từ khóa được sử dụng để áp dụng bộ lọc.
  • “LIKE” là toán tử so sánh được sử dụng cùng với ký tự đại diện
  •  ‘xxx’  là bất kỳ mẫu được chỉ định nào ví dụ như từ một ký tự đơn trở lên và “%” khớp với bất kì số lượng ký tự nào bắt đầu từ 0.

Chúng ta hãy xem xét một ví dụ thực tế. Giả sử chúng ta muốn lấy danh sách tất cả bộ phim có từ “code” trong tiêu đề, chúng ta sẽ sử dụng ký tự % để thực hiện khớp mẫu trên cả hai phía của từ “code”. Dưới đây là câu lệnh SQL có thể được sử dụng để đạt kết quả mong muốn:

Thực thi câu lệnh trên trong MySQL đối với myflixdb cho chúng ta kết quả sau:

Lưu ý rằng ngay cả khi từ khóa tìm kiếm “code” xuất hiện ở đầu hay cuối tiêu đề thì nó vẫn được trả về trong tập kết quả của chúng ta. Điều này là do dòng lệnh của chúng ta bao gồm bất kỳ số lượng ký tự nào ở đầu sau đó khớp với từ “code” và theo sau bởi bất kỳ số lượng ký tự nào ở cuối.

Nếu như sửa đổi câu lệnh trên, chỉ để ký tự % ở đầu tiêu chí tìm kiếm:

Thực thi đoạn mã trên sẽ cho ra kết quả như sau:

Lưu ý rằng chỉ có một bản ghi được trả về từ cơ sở dữ liệu. Điều này xảy ra là bởi vì dòng lệnh của chúng ta khớp với bất kì số lượng ký tự nào ở đầu của tiêu đề phim và chỉ lấy bản ghi kết thúc với từ “code”

Thay đổi ký tự % sang cuối mẫu đã chỉ định. Kịch bản thay đổi được hiển thị dưới đây:

Kết quả sẽ như sau:

Chỉ một bản ghi được trả về từ cơ sở dữ liệu. Điều này xảy ra bởi vì câu lệnh của chúng ta chỉ khớp với tất cả tiêu đề bắt đầu bằng từ “code” và theo sau bởi bất kì số lượng ký tự nào.

Gạch dưới _

Ký tự đại diện gạch dưới được dùng để khớp chính xác một ký tự. Giả sử rằng chúng ta muốn tìm kiếm tất cả phim được phát hành trong những năm 200x, trong đó x chính xác là một ký tự có thể chứa bất kì giá trị nào. Chúng ta sẽ sử dụng ký tự gạch dưới để đạt được điều này. Câu lệnh dưới đây chọn tất cả phim được phát hành vào năm “200x”:

Thực thi câu lệnh trên trong MySQL cho ra kết quả sau:

Lưu ý rằng chỉ những bộ phim có giá trị 200 và được theo sau bởi bất kỳ ký tự nào trong năm phát hành mới được trả về trong bộ kết quả. Điều này xảy ra là bởi vì ký tự đại diện gạch dưới khớp với mẫu 200 mà được theo sau bởi bất kỳ ký tự đơn nào.

NOT LIKE

Toán tử logic NOT có thể được sử dụng cùng với các ký tự đại diện để trả về các hàng không khớp với mẫu đã chỉ định.

Giả sử chúng ta muốn lấy danh sách phim có năm phát hành không phải là năm 200x. Chúng ta sẽ sử dụng toán tử logic NOT cùng với ký tự gạch dưới để cho ra kết quả. Câu lệnh dưới đây thực hiện điều này:

Lưu ý rằng chỉ những bộ phim không bắt đầu bằng 200 trong năm phát hành mới được trả về trong tập kết quả của chúng ta. Điều này là do chúng ta đã sử dụng toán tử logic NOT trong tìm kiếm mẫu ký tự đại diện.

Từ khóa ESCAPE

Từ khóa ESCAPE được sử dụng để thoát khỏi các ký tự khớp mẫu như phần trăm (%) và dấu gạch dưới ( _ ) nếu chúng là một phần của dữ liệu.

Giả sử rằng chúng ta muốn kiểm tra chuỗi “67%”:

Nếu muốn tìm kiếm bộ phim “67% Guilty”, chúng ta có thể sử dụng câu lệnh sau:

Lưu ý rằng hai ký tự phần trăm kép “%%” trong mệnh đề LIKE, cái đầu tiên có màu đỏ được coi là một phần của chuỗi tìm kiếm. Một cái còn lại được sử dụng để khớp với bất kỳ số lượng ký tự tiếp theo.

Truy vấn tương tự cũng sẽ hoạt động nếu chúng ta sử dụng một cái gì khác như:

Kết luận

  • LIKE và các ký tự đại diện là những công cụ mạnh mẽ giúp tìm kiếm dữ liệu khớp với những mẫu phức tạp.
  • Có một số ký tự đại diện bao gồm: phần trăm, gạch dưới và charlist (không được hỗ trợ bởi MySQL).
  • Ký tự đại diện phần trăm dùng để khớp với bất kỳ số lượng ký tự nào bắt đầu từ 0 trở lên.
  • Ký tự đại diện gạch dưới dùng đề khớp chính xác một ký tự.

Các bạn có thể truy cập ngay Gitiho.com để tìm hiểu thêm các khóa học về SQL, lập trình VBA, C#… và rất nhiều khóa học bổ ích khác. Chúng tôi có rất nhiều ưu đãi đang dành cho bạn. Cảm ơn bạn đã đọc bài viết.

Xem thêm: Phân biệt SQL với MySQL

Đánh giá bài viết này

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

Bài viết liên quan

HƯỚNG DẪN VỀ LỆNH LIMIT VÀ OFFSET TRONG MySQL

HƯỚNG DẪN VỀ LỆNH LIMIT VÀ OFFSET TRONG MySQL

CÁCH SỬ DỤNG TỰ ĐỘNG TĂNG (AUTO_INCREMENT) TRONG MySQL

CÁCH SỬ DỤNG TỰ ĐỘNG TĂNG (AUTO_INCREMENT) TRONG MySQL

HƯỚNG DẪN CÁC KIỂU CỦA LỆNH JOIN TRONG MySQL: INNER, OUTER, LEFT, RIGHT, CROSS

HƯỚNG DẪN CÁC KIỂU CỦA LỆNH JOIN TRONG MySQL: INNER, OUTER, LEFT, RIGHT, CROSS

Hướng dẫn tìm hiểu về NULL và NOT NULL trong MySQL

Hướng dẫn tìm hiểu về NULL và NOT NULL trong MySQL

Tìm hiểu về mệnh đề GROUP BY và HAVING trong MySQL

Tìm hiểu về mệnh đề GROUP BY và HAVING trong MySQL

Hướng dẫn cách sử dụng UNION trong MySQL

Hướng dẫn cách sử dụng UNION trong MySQL

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội