Trong MySQL, bạn có thể sử dụng NOT LIKE
để thực hiện phủ định LIKE
nhà điều hành. Nói cách khác, NOT LIKE
trả về kết quả ngược lại với LIKE
.
Nếu chuỗi khớp với mẫu được cung cấp, kết quả là 0
, nếu không thì nó là 1
.
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 NOT 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.
Toán tử này tương đương với việc thực hiện các thao tác sau:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
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ố:
SELECT 'Charlie' NOT LIKE 'Char%';
Kết quả:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
Trong trường hợp này, giá trị trả về là 0
có nghĩa là chuỗi đầu vào did thực sự phù hợp với mô hình.
Ví dụ 2 - So với LIKE
Ở đây nó được so sánh với LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Kết quả:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Ví dụ 3 - Cú pháp tương đương
Như đã đề cập, NOT LIKE
tương đương với việc sử dụng NOT
toán tử logic đối với LIKE
nhà điều hành. Đây là ý tôi:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Kết quả:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Ví dụ 4 - Ví dụ về Cơ sở dữ liệu
LIKE
toán tử thường được sử dụng trong WHERE
mệnh đề của một SELECT
khi truy vấn cơ sở dữ liệu. Do đó, NOT LIKE
có thể được sử dụng trong cùng một thời trang.
Khi chúng tôi sử dụng NOT LIKE
theo cách này, nó thu hẹp kết quả xuống chỉ những bản ghi không khớp, nhưng chúng tôi thấy kết quả thực tế (không chỉ là 1
hoặc 0
).
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:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Kết quả:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | +----------+------------------------+
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 don’t bắt đầu bằng chữ B .
Đây là danh sách đầy đủ các nghệ sĩ trong bảng đó:
SELECT ArtistId, ArtistName FROM Artists;
Kết quả:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 4 | Buddy Rich | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 11 | Black Sabbath | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+------------------------+
Vì vậy, nếu chúng ta xóa NOT
(tức là chúng tôi chỉ sử dụng LIKE
) chúng tôi nhận được kết quả này:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Kết quả:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Ví dụ 5 - Thoát với ký tự gạch chéo ngược
Ký tự gạch chéo ngược (\
) có thể được sử dụng để thoát khỏi bất kỳ ký tự đại diện nào (_
và %
). 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:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Kết quả:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Ví dụ 6 - 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ụ:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Kết quả:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Ví dụ 7 - Biểu thức số
Toán tử này có thể được sử dụng trên các biểu thức số. Đây là một ví dụ:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Kết quả:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+