Hướng dẫn này là một phần của loạt bài Tìm hiểu Truy vấn SQL Cơ bản Sử dụng MySQL. Trong hướng dẫn này, chúng ta sẽ thảo luận về các truy vấn SQL để thực hiện các thao tác tìm kiếm trên dữ liệu bảng trong MySQL bằng cách sử dụng mệnh đề WHERE với điều kiện LIKE.
Điều kiện thích
THÍCH và KHÔNG THÍCH các điều kiện có thể được sử dụng để thực hiện các thao tác tìm kiếm trên dữ liệu bảng bằng cách sử dụng mẫu được chỉ định.
# LIKE - Syntax
SELECT * FROM `table_name` WHERE `column_name` LIKE '<pattern>';
# NOT LIKE - Syntax
SELECT * FROM `table_name` WHERE `column_name` NOT LIKE '<pattern>';
Giải thích Truy vấn
THÍCH điều kiện có thể được sử dụng để tìm kiếm trong một cột cụ thể bằng cách sử dụng mẫu được chỉ định. Chúng ta có thể sử dụng điều kiện LIKE với WHERE để thực hiện các thao tác tìm kiếm.
Chúng ta phải chỉ định ít nhất một điều kiện bằng mệnh đề WHERE cho các hàng đủ điều kiện để xóa, nếu không toàn bộ bảng sẽ bị xóa. Tất cả các hàng của bảng sẽ bị xóa mà không cần điều kiện.
Chúng tôi có thể sử dụng các ký tự đại diện được đề cập bên dưới với điều kiện LIKE để tinh chỉnh kết quả tìm kiếm.
Phần trăm (%) - Nó đại diện cho không, một hoặc nhiều ký tự
Dấu gạch dưới (_) - Nó đại diện cho một ký tự duy nhất
Chúng tôi cũng có thể sử dụng từ khóa ESCAPE để đưa các ký tự đại diện vào kết quả tìm kiếm.
Ví dụ
Phần này cung cấp các ví dụ để thực hiện các thao tác tìm kiếm bằng cách sử dụng điều kiện LIKE với mệnh đề WHERE. Sử dụng truy vấn được đề cập bên dưới để tạo bảng người dùng có id, tên, họ và các cột hoạt động để lưu trữ dữ liệu người dùng.
# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));
Truy vấn được đề cập bên dưới có thể được sử dụng để chèn dữ liệu vào bảng người dùng.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 1, 'John', 'Smith', 1 ),
( 2, 'Rick', 'Jones', 1 ),
( 3, 'Catherine', 'Ponting', 0 ),
( 4, 'Harsh', 'Upadhyay', 1 ),
( 5, 'Tajwinder', 'Singh', 0 );
Truy vấn đề cập ở trên sẽ chèn 5 hàng trong bảng có id, tên, họ và các cột hiện hoạt để đại diện cho 5 người dùng khác nhau.
Bây giờ chúng ta sẽ sử dụng điều kiện LIKE với mệnh đề WHERE để tìm kiếm trong cột tên hoặc họ của bảng người dùng. Nó có thể được thực hiện bằng cách sử dụng WHERE LIKE trong MySQL như hình dưới đây.
# LIKE - Exact search - Single Condition
SELECT * FROM `user` WHERE `first_name` LIKE 'John';
SELECT * FROM `user` WHERE `first_name` LIKE 'john';
# Result
1 John Smith 1
# LIKE - Exact search - Multiple Conditions
SELECT * FROM `user` WHERE `first_name` LIKE 'Rick' AND `last_name` LIKE 'Jones';
# Result
2 Rick Jones 1
# NOT LIKE - Exact search - Single Condition
SELECT * FROM `user` WHERE `first_name` NOT LIKE 'John';
# Result
2 Rick Jones 1
3 Catherine Ponting 0
4 Harsh Upadhyay 1
5 Tajwinder Singh 0
Các truy vấn được đề cập ở trên thực hiện tìm kiếm chính xác bằng cách sử dụng WHERE LIKE và mẫu đã cho. Điều kiện LIKE bỏ qua trường hợp này trong khi khớp với các giá trị cột. Nó cung cấp cùng một kết quả với chữ hoa hoặc chữ thường.
Bây giờ chúng ta sẽ sử dụng ký tự đại diện để thực hiện tìm kiếm như hình dưới đây.
# LIKE - % Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '%ine';
# Result
3 Catherine Ponting 0
# LIKE - % Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE 'Cat%in%';
# Result
3 Catherine Ponting 0
# LIKE - % Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '%in%';
# Result
3 Catherine Ponting 0
5 Tajwinder Singh 0
# LIKE - _ Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '_ohn';
# Result
1 John Smith 1
# LIKE - % & _ Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '_oh%';
# Result
1 John Smith 1
Truy vấn được đề cập bên dưới giải thích cách sử dụng từ khóa ESCAPE với điều kiện LIKE.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 6, 'Jo%hn', 'Waugh', 1 ),
( 7, 'Rick', 'Jones', 1 );
# LIKE - ESCAPE - Exact search
SELECT * FROM `user` WHERE `first_name` LIKE '%#%hn' ESCAPE '#';
# Result
6 Jo%hn Waugh 1
Đây là cách chúng ta có thể sử dụng điều kiện LIKE với mệnh đề WHERE có và không có ký tự đại diện để thực hiện các thao tác tìm kiếm bằng cách sử dụng mẫu được chỉ định.