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

Nội dung được viết bởi G-LEARNING

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:

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

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 :

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

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:

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

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:

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

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

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

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:

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

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

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

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:

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

Kết quả sẽ như sau:

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

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”:

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

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

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

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:

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

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%”:

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

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:

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

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ư:

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

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

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

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

0 thảo luận

@ 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
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông