Vấn đề:
Bạn muốn tìm một chuỗi con phù hợp với một mẫu trong một chuỗi.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên khách hàng với dữ liệu trong các cột sau:id
, first_name
, last_name
và city
.
id | first_name | last_name | thành phố |
---|---|---|---|
1 | Alan | Watson | Madrid |
2 | Lisa | Đen | Singapore |
3 | Laura | Williams | Seattle |
4 | Milan | Gạch | Seoul |
Hãy xem một số ví dụ về đối sánh mẫu trong SQL.
Ví dụ 1:
Hãy hiển thị tên, họ và thành phố của từng khách hàng có tên thành phố bắt đầu bằng chữ 'S.'
Giải pháp:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
last_name | first_name | thành phố |
---|---|---|
Lisa | Đen | S ingapore |
Milan | Gạch | S eoul |
Laura | Williams | S ăn uống |
Chúng tôi đã sử dụng ký tự đại diện%, đại diện cho không hoặc nhiều ký tự không xác định. Có thể sử dụng ký tự đại diện này ở bất kỳ vị trí nào trong chuỗi.
Ví dụ 2:
Hãy hiển thị tên, họ và thành phố của mỗi khách hàng có tên thành phố chứa chính xác năm ký tự.
Giải pháp:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Đây là kết quả:
last_name | first_name | thành phố |
---|---|---|
Milan | Gạch | Seoul |
Ký tự đại diện gạch dưới có thể được sử dụng để đại diện cho một ký tự không xác định. Do đó, bằng cách sử dụng năm ký tự trong số chúng liên tiếp, chúng ta có thể biểu diễn tất cả các chuỗi dài năm ký tự. Trong ví dụ của chúng tôi, thành phố duy nhất phù hợp với mô tả đó là Seoul.
Ví dụ 3:
Hãy hiển thị tên, họ và thành phố của từng khách hàng có thành phố bắt đầu bằng chữ 'S' và có chữ 'o' là ký tự từ thứ ba đến cuối cùng.
Giải pháp:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Đây là kết quả:
last_name | first_name | thành phố |
---|---|---|
Lisa | Đen | S ingap o lại |
Milan | Gạch | S đ o ul |
Truy vấn chỉ trả về hai bản ghi:Lisa Black từ S ingap o lại và Milan Brick từ S đ o ul. Các thành phố này phù hợp với mô hình đã cho. Ở đây, chúng tôi đã kết hợp cả hai ký tự đại diện để tạo ra một mẫu cụ thể hơn:tất cả các chuỗi bắt đầu bằng chữ cái viết hoa 'S' và chứa bất kỳ số ký tự nào khác sau đó, miễn là ký tự từ thứ ba đến cuối cùng là chữ thường 'o. '
Thảo luận:
Nếu bạn muốn chọn các bản ghi trong đó một chuỗi khớp với một mẫu cụ thể, bạn có thể sử dụng LIKE
mệnh đề làm điều kiện trong WHERE
mệnh đề. Sau WHERE
, liệt kê tên của cột (ví dụ:city
) theo sau là LIKE
mệnh đề chỉ định mẫu chuỗi (ví dụ:'S%o__'
) để tìm kiếm.
Như chúng ta đã thấy trong các ví dụ, bạn có thể sử dụng hai ký tự đặc biệt được gọi là ký tự đại diện đại diện cho các ký tự không xác định:
- Ký tự đại diện '%' biểu thị không hoặc nhiều ký tự.
- Ký tự đại diện '_' biểu thị bất kỳ ký tự đơn nào.
Bạn có thể kết hợp các ký tự đại diện này để đạt được một số kết quả thực sự mạnh mẽ. Bạn cũng có thể xâu chuỗi nhiều hơn một LIKE
điều kiện. Cuối cùng, bạn có thể sử dụng NOT
toán tử để tìm các chuỗi không khớp với mẫu đã cho.