SQL - Оператор LIKE

Xin chào các bạn đam mê SQL! Hôm nay, chúng ta sẽ cùng nhau khám phá một trong những оператор最有 ích và linh hoạt nhất trong SQL: оператор LIKE. Như một người giáo viên khoa học máy tính gần gũi, tôi rất vui mừng được hướng dẫn các bạn trong hành trình này. Vậy, hãy lấy饮料 yêu thích của bạn, ngồi thoải mái, và cùng nhau bắt đầu cuộc phiêu lưu SQL này nhé!

SQL - LIKE Operator

Оператор LIKE trong SQL

Оператор LIKE là một công cụ mạnh mẽ trong SQL cho phép chúng ta tìm kiếm các mẫu cụ thể trong dữ liệu của mình. Nó giống như một chiếc kính lúp siêu thông minh có thể tìm thấy chính xác những gì chúng ta đang tìm kiếm trong cơ sở dữ liệu.

Hãy tưởng tượng bạn đang cố gắng tìm một cuốn sách trong một thư viện khổng lồ. Bạn có thể không nhớ chính xác tiêu đề, nhưng bạn biết rằng nó có từ "phiêu lưu" trong đó. Оператор LIKE là bạn thư viện của bạn, người có thể giúp bạn tìm thấy tất cả các cuốn sách có từ "phiêu lưu" trong tiêu đề.

Cú pháp cơ bản của оператор LIKE là:

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

Vậy điều gì exactly là "mẫu" mà chúng ta đang nói đến? Đó là nơi mà chủ đề tiếp theo của chúng ta đến...

Những gì là các ký tự đại diện?

Các ký tự đại diện là các ký tự đặc biệt có thể đại diện cho một hoặc nhiều ký tự trong một mẫu tìm kiếm. Chúng giống như những lá bài joker trong bộ bài - chúng có thể thay thế cho bất kỳ lá bài nào khác. Trong SQL, chúng ta sử dụng các ký tự đại diện với оператор LIKE để tạo ra các mẫu tìm kiếm linh hoạt.

Có hai ký tự đại diện chính được sử dụng với LIKE là:

  1. % (dấu phần trăm)
  2. _ (dấu gạch dưới)

Hãy cùng khám phá chi tiết từng ký tự này.

Ký tự đại diện '%'

Ký tự đại diện '%' đại diện cho không, một hoặc nhiều ký tự. Đây là ký tự đại diện linh hoạt nhất và thường được sử dụng khi bạn không chắc chắn về vị trí hoặc độ dài chính xác của mẫu bạn đang tìm kiếm.

Dưới đây là một số ví dụ:

-- Tìm tất cả các khách hàng whose names start with 'A'
SELECT * FROM Customers WHERE CustomerName LIKE 'A%';

-- Tìm tất cả các sản phẩm kết thúc bằng 'phone'
SELECT * FROM Products WHERE ProductName LIKE '%phone';

-- Tìm tất cả các đơn hàng với 'book' ở bất kỳ đâu trong tên sản phẩm
SELECT * FROM Orders WHERE ProductName LIKE '%book%';

Trong ví dụ đầu tiên, chúng ta đang tìm kiếm tất cả các khách hàng whose names start with 'A', followed by any number of characters. Điều này sẽ khớp với các tên như "Alex", "Anna", hoặc thậm chí "A very long name".

Ví dụ thứ hai tìm kiếm các sản phẩm kết thúc bằng 'phone', có thể khớp với "iPhone", "Smartphone", hoặc "Headphone".

Ví dụ cuối cùng tìm kiếm bất kỳ đơn hàng nào trong đó tên sản phẩm chứa 'book' ở bất kỳ đâu, vì vậy nó sẽ khớp với "Bookshelf", "Notebook", hoặc "Book of Spells".

Ký tự đại diện '_'

Ký tự đại diện '_' đại diện cho một ký tự duy nhất. Nó giống như một placeholder cho chính xác một ký tự trong mẫu.

Hãy xem xét một số ví dụ:

-- Tìm tất cả các khách hàng whose names are exactly 4 characters long
SELECT * FROM Customers WHERE CustomerName LIKE '____';

-- Tìm tất cả các sản phẩm bắt đầu bằng 'A' và có độ dài 5 ký tự
SELECT * FROM Products WHERE ProductName LIKE 'A____';

-- Tìm tất cả các đơn hàng trong đó ký tự thứ hai của mã đơn hàng là '3'
SELECT * FROM Orders WHERE OrderID LIKE '_3%';

Trong ví dụ đầu tiên, chúng ta đang tìm kiếm các tên khách hàng có độ dài chính xác là 4 ký tự. Điều này sẽ khớp với các tên như "John" hoặc "Mary", nhưng không phải "Alexander" hoặc "Bob".

Ví dụ thứ hai tìm kiếm các sản phẩm có độ dài 5 ký tự bắt đầu bằng 'A'. Nó sẽ khớp với "Apple" hoặc "Audio", nhưng không phải "Apricot" hoặc "A4 paper".

Ví dụ cuối cùng tìm kiếm các đơn hàng trong đó ký tự thứ hai của mã đơn hàng là '3'. Nó có thể khớp với các mã đơn hàng như "13456", "23789", hoặc bất kỳ kết hợp nào khác miễn là ký tự thứ hai là '3'.

Оператор LIKE với OR

Đôi khi, chúng ta muốn tìm kiếm nhiều mẫu cùng một lúc. Đó là nơi mà оператор OR rất hữu ích. Chúng ta có thể kết hợp nó với LIKE để tìm kiếm các mẫu khác nhau trong cùng một truy vấn.

Dưới đây là một ví dụ:

-- Tìm tất cả các khách hàng whose names start with 'A' hoặc kết thúc bằng 's'
SELECT * FROM Customers
WHERE CustomerName LIKE 'A%' OR CustomerName LIKE '%s';

Truy vấn này sẽ trả về các khách hàng như "Alice", "Andreas", "Boris", hoặc "Charles". Nó khớp với các tên hoặc bắt đầu bằng 'A' hoặc kết thúc bằng 's' (hoặc cả hai).

Оператор NOT với điều kiện LIKE

Vậy nếu chúng ta muốn tìm kiếm mọi thứ không khớp với một mẫu cụ thể? Đó là nơi mà оператор NOT được sử dụng. Chúng ta có thể sử dụng NOT LIKE để loại trừ các mẫu cụ thể khỏi tìm kiếm của mình.

Dưới đây là một ví dụ:

-- Tìm tất cả các sản phẩm không bắt đầu bằng 'A'
SELECT * FROM Products
WHERE ProductName NOT LIKE 'A%';

Truy vấn này sẽ trả về tất cả các sản phẩm ngoại trừ những sản phẩm bắt đầu bằng 'A'. Vì vậy, nó sẽ bao gồm "Banana", "Cherry", "Dell Laptop", nhưng không phải "Apple" hoặc "Acer Monitor".

Ký tự escape với оператор LIKE

Đôi khi, chúng ta có thể muốn tìm kiếm các mẫu bao gồm các ký tự đại diện chính nó. Ví dụ, giả sử chúng ta muốn tìm kiếm các sản phẩm có '%' trong tên. Chúng ta sử dụng ký tự escape để cho SQL biết rằng chúng ta muốn coi các ký tự đặc biệt là các ký tự thông thường.

Ký tự escape mặc định trong SQL là dấu gạch ngang (). Dưới đây là cách chúng ta sử dụng nó:

-- Tìm các sản phẩm có '%' trong tên
SELECT * FROM Products
WHERE ProductName LIKE '%\%%';

-- Tìm các sản phẩm có '_' trong tên
SELECT * FROM Products
WHERE ProductName LIKE '%\_%';

Truy vấn đầu tiên sẽ khớp với các tên sản phẩm như "50% off", "100% cotton", v.v. Truy vấn thứ hai sẽ khớp với các tên như "A_B", "C_D", v.v.

Uses of LIKE Operator in SQL

Оператор LIKE có nhiều ứng dụng thực tế trong việc truy vấn cơ sở dữ liệu. Dưới đây là bảng tóm tắt một số sử dụng phổ biến:

Use Case Example Query
Finding partial matches SELECT * FROM Customers WHERE CustomerName LIKE '%son%';
Searching for specific formats SELECT * FROM Orders WHERE OrderID LIKE 'ORD_____';
Filtering based on starting/ending characters SELECT * FROM Products WHERE ProductName LIKE 'A%' OR ProductName LIKE '%z';
Excluding certain patterns SELECT * FROM Employees WHERE EmployeeName NOT LIKE 'John%';
Searching for special characters SELECT * FROM Products WHERE ProductName LIKE '%\%%';

Nhớ rằng, оператор LIKE là không phân biệt chữ hoa chữ thường trong hầu hết các thực hiện SQL. Điều này có nghĩa là 'a%' sẽ khớp với 'Apple', 'apple', và 'APPLE'.

Cuối cùng, оператор LIKE là một công cụ mạnh mẽ trong bộ công cụ SQL của bạn. Nó cho phép bạn thực hiện các phép khớp chuỗi linh hoạt và mạnh mẽ, điều này rất quan trọng trong nhiều nhiệm vụ phân tích và truy xuất dữ liệu. Hãy gyak tập sử dụng nó với các ký tự đại diện khác nhau và các kết hợp, và bạn sẽ sớm sử dụng nó như một chuyên gia!

Chúc các bạn may mắn trong việc truy vấn, các nhà vô địch SQL tương lai!

Credits: Image by storyset