Nội dung chính
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.
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.
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 đó:
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.
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.
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 đượ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ư:
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
MySQL được dùng làm hệ quản trị cơ sở dữ liệu kèm theo PHP, và chúng là một “cặp đôi hoàn hảo” để xây dựng website hoàn chỉnh. Nếu như bạn là người mới bắt đầu học lập trình web, đang muốn tìm hiểu về ngôn ngữ PHP, cách xử lý form, quản lý cơ sở dữ liệu người dùng bằng my SQL và xây dựng web cơ bản thì khóa học này của Gitiho sẽ dành cho bạn: Lập trình web với PHP cho người mới bắt đầu
Trước khi đăng ký khóa học, bạn có thể học thử để trải nghiệm nhé! Chúc bạn thành công!