Trong MySQL, LIKE
toán tử thực hiện đối sánh mẫu bằng cách sử dụng mẫu SQL.
Nếu chuỗi khớp với mẫu được cung cấp, kết quả là 1
, nếu không thì nó là 0
.
Mẫu không nhất thiết phải là một chuỗi ký tự. Hàm này có thể được sử dụng với các biểu thức chuỗi và cột bảng.
Cú pháp
Cú pháp như sau:
expr LIKE pat [ESCAPE 'Escape_char']
Ở đâu expr
là chuỗi đầu vào và pat
là mẫu mà bạn đang thử nghiệm chuỗi.
ESCAPE
tùy chọn mệnh đề cho phép bạn chỉ định một ký tự thoát. Ký tự thoát mặc định là \
, vì vậy bạn có thể bỏ qua điều khoản này nếu bạn không cần thay đổi điều này.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là ví dụ về cách sử dụng toán tử này trong SELECT
tuyên bố:
CHỌN 'Charlie' THÍCH 'Char%';
Kết quả:
+ ------------------------ + | 'Charlie' LIKE 'Char%' | + ------------------------ + | 1 | + ------------------------ +
Trong trường hợp này, giá trị trả về là 1
có nghĩa là chuỗi đầu vào khớp với mẫu. Đặc biệt, chúng tôi đã chỉ định rằng chuỗi đầu vào phải bắt đầu bằng Char và kết thúc bằng bất cứ thứ gì. %
ký tự khớp với bất kỳ số ký tự nào (bao gồm cả 0 ký tự).
Đây là những gì sẽ xảy ra nếu chúng tôi bỏ %
:
CHỌN 'Charlie' THÍCH 'Char';
Kết quả:
+ ----------------------- + | 'Charlie' THÍCH 'Char' | + ----------------------- + | 0 | + ----------------------- +
Kết quả trả về là 0
có nghĩa là không trùng khớp. Điều này là do chúng tôi không sử dụng ký tự đại diện để chỉ định bất kỳ ký tự nào khác.
Ví dụ 2 - _
Ký tự đại diện
Chúng tôi cũng có tùy chọn sử dụng _
ký tự đại diện để chỉ định một ký tự duy nhất. Đây là một ví dụ:
CHỌN 'Charlie' THÍCH 'Ch_rlie';
Kết quả:
+ -------------------------- + | 'Charlie' THÍCH 'Ch_rlie' | + -------------------------- + | 1 | + -------------------------- +
Hai ký tự đại diện có thể được kết hợp trong một mẫu nếu được yêu cầu:
CHỌN 'Charlie thích bánh rán' THÍCH 'Ch_rlie%' NHƯ 'Kết quả';
Kết quả:
+ -------- + | Kết quả | + -------- + | 1 | + -------- +
Đây là một số khác:
CHỌN 'Charlie thích bánh rán' THÍCH 'Ch_rlie% bánh rán' NHƯ 'Kết quả 1', 'Charlie thích bánh rán' THÍCH 'Ch_rlie% nut' NHƯ 'Kết quả 2', 'Charlie thích bánh rán' THÍCH 'Ch% rlie% lượt thích % 'NHƯ' Kết quả 3 ',' Charlie thích bánh rán 'THÍCH'% thích% 'NHƯ' Kết quả 4 ';
Kết quả:
+ ---------- + ---------- + ---------- + ---------- + | Kết quả 1 | Kết quả 2 | Kết quả 3 | Kết quả 4 | + ---------- + ---------- + ---------- + ---------- + | 1 | 1 | 1 | 1 | + ---------- + ---------- + ---------- + ---------- +Hãy thực hiện một số thay đổi đối với ví dụ đó để chúng ta có thể xem một số ví dụ về thời điểm chúng không khớp:
CHỌN 'Charlie thích bánh rán' THÍCH 'Ch% rlie_donuts' NHƯ 'Kết quả 1', 'Charlie thích bánh rán' THÍCH 'Charlie_nuts' NHƯ 'Kết quả 2', 'Charlie thích bánh rán' THÍCH 'Charlie _likes bánh rán' NHƯ 'Kết quả 3 ',' Charlie thích bánh rán 'LIKE' _ lượt thích _ 'NHƯ' Kết quả 4 ';Kết quả:
+ ---------- + ---------- + ---------- + ---------- + | Kết quả 1 | Kết quả 2 | Kết quả 3 | Kết quả 4 | + ---------- + ---------- + ---------- + ---------- + | 0 | 0 | 0 | 0 | + ---------- + ---------- + ---------- + ---------- +Ví dụ 3 - Ví dụ về Cơ sở dữ liệu
LIKE
toán tử thường được sử dụng trongWHERE
mệnh đề của mộtSELECT
khi truy vấn cơ sở dữ liệu. Khi nó được sử dụng theo cách này, nó sẽ thu hẹp kết quả xuống chỉ những bản ghi phù hợp, nhưng chúng tôi thấy kết quả thực tế (không chỉ là1
hoặc0
).Dưới đây là một ví dụ về cách chúng tôi có thể sử dụng toán tử này trong một truy vấn cơ sở dữ liệu:
CHỌN ArtistId, ArtistNameFROM ArtistsWHERE ArtistName LIKE 'B%';Kết quả:
+ ---------- + ---------------- + | ArtistId | ArtistName | + ---------- + ---------------- + | 4 | Bạn Thân Giàu Có || 11 | Ngày sa bát đen || 15 | Những chú chim của Tokyo || 16 | Bodyjar | + ---------- + ---------------- +Trong trường hợp này, đó là một truy vấn đơn giản trả về tất cả các nghệ sĩ có tên bắt đầu bằng chữ B .
Đây là danh sách đầy đủ các nghệ sĩ trong bảng đó:
CHỌN ArtistId, Nghệ sĩ ArtistNameFROM;Kết quả:
+ ---------- + ------------------------ + | ArtistId | ArtistName | + ---------- + ------------------------ + | 1 | Iron Maiden || 2 | AC / DC || 3 | Allan Holdsworth || 4 | Bạn Thân Giàu Có || 5 | Devin Townsend || 6 | Jim Reeves || 7 | Tom Jones || 8 | Maroon 5 || 9 | Kịch bản || 10 | Lít || 11 | Ngày sa bát đen || 12 | Michael Học cách đá || 13 | Carabao || 14 | Karnivool || 15 | Những chú chim của Tokyo || 16 | Bodyjar | + ---------- + ------------------------ +Ví dụ 4 - Thoát với ký tự gạch chéo ngược
Điều gì sẽ xảy ra nếu một trong các ký tự đại diện nằm trong chuỗi đầu vào của bạn và bạn cần thực hiện đối sánh với ký tự đó? Bạn có thể thoát nó bằng ký tự gạch chéo ngược (
\
). Dưới đây là một ví dụ về tìm kiếm như vậy có và không có ký tự thoát:CHỌN 'usr_123' LIKE 'usr_123' AS 'Không có lối thoát', 'usr_123' LIKE 'usr \ _123' NHƯ 'Có lối thoát';Kết quả:
+ ---------------- + ------------- + | Không lối thoát | Với lối thoát | + ---------------- + ------------- + | 1 | 1 | + ---------------- + ------------- +Trong trường hợp này, cả hai đều phù hợp, nhưng vì những lý do khác nhau. Dòng đầu tiên khớp vì ký tự đại diện chỉ định rằng bất kỳ ký tự nào sẽ khớp. Dòng thứ hai cũng khớp, nhưng chỉ vì chuỗi đầu vào tình cờ có dấu gạch dưới ở đúng vị trí.
Hãy thay đổi một chút chuỗi đầu vào để chúng ta nhận được kết quả khác:
CHỌN 'usr + 123' LIKE 'usr_123' AS 'Không có lối thoát', 'usr + 123' LIKE 'usr \ _123' NHƯ 'Có lối thoát';Kết quả:
+ ---------------- + ------------- + | Không lối thoát | Với lối thoát | + ---------------- + ------------- + | 1 | 0 | + ---------------- + ------------- +Phiên bản không thoát trả về giá trị dương, vì ký tự đại diện có nghĩa là chúng ta có thể có bất kỳ ký tự nào ở vị trí đó. Phiên bản thoát đã tuyên bố rõ ràng rằng chỉ có ký tự gạch dưới (
_
) sẽ phù hợp. Chuỗi đầu vào không có ký tự gạch dưới ở vị trí đó và do đó kết quả là âm.Ví dụ 5 -
ESCAPE
Mệnh đềBạn cũng có thể sử dụng
ESCAPE
để chỉ định ký tự thoát tùy chỉnh của riêng bạn. Đây là một ví dụ:CHỌN 'usr_123' LIKE 'usr | _123' ESCAPE '|' NHƯ 'Chuỗi 1', 'usr + 123' THÍCH 'usr | _123' ESCAPE '|' NHƯ 'Chuỗi 2';Kết quả:
+ ---------- + ---------- + | Chuỗi 1 | Chuỗi 2 | + ---------- + ---------- + | 1 | 0 | + ---------- + ---------- +Ví dụ 6 - Biểu thức số
Việc triển khai MySQL của
LIKE
toán tử cho phép các biểu thức số được sử dụng. Đây là một ví dụ:CHỌN 1234 THÍCH '12% ', 1234 THÍCH' 12_ ';Kết quả:
+ ----------------- + ----------------- + | 1234 THÍCH '12%' | 1234 THÍCH '12_' | + ----------------- + ----------------- + | 1 | 0 | + ----------------- + ----------------- +