Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Các ký tự đại diện (wildcard) khác nhau dùng với toán tử LIKE trong MySQL


Như biết, LIKE dùng cùng WILDCARD để lấy chuỗi có mẫu chỉ định. WILDCARD là ký tự giúp tìm dữ liệu khớp tiêu chí phức tạp. Các loại wildcard dùng với LIKE:

% - Dấu phần trăm

Dùng để chỉ định mẫu 0, 1 hoặc nhiều ký tự. Cú pháp cơ bản:

SELECT ... WHERE column_name LIKE 'X%'

X là mẫu bắt đầu (ký tự đơn hoặc nhiều), % khớp bất kỳ số ký tự nào từ 0. % có thể dùng nhiều cách với mẫu. Ví dụ (X là mẫu):

1. LIKE 'X%': Tìm giá trị bắt đầu bằng "X".

mysql> SELECT * FROM Student WHERE name LIKE 'a%'; 
+------+-------+---------+---------+ 
| Id   | Name  | Address | Subject | 
+------+-------+---------+---------+ 
| 2    | Aarav | Mumbai  | History | 
+------+-------+---------+---------+ 
1 row in set (0.00 sec)

2. LIKE '%X': Tìm giá trị kết thúc bằng "X".

mysql> SELECT * FROM Student WHERE name LIKE '%v'; 
+------+--------+---------+-----------+ 
| Id   | Name   | Address | Subject   | 
+------+--------+---------+-----------+ 
| 1    | Gaurav | Delhi   | Computers | 
| 2    | Aarav  | Mumbai  | History   | 
| 20   | Gaurav | Jaipur  | Computers | 
+------+--------+---------+-----------+ 
3 rows in set (0.00 sec)

3. LIKE '%X%': Tìm giá trị có "X" ở bất kỳ vị trí nào.

mysql> SELECT * FROM Student WHERE name LIKE '%h%'; 
+------+---------+---------+----------+ 
| Id   | Name    | Address | Subject  | 
+------+---------+---------+----------+ 
| 15   | Harshit | Delhi   | Commerce | 
| 21   | Yashraj | NULL    | Math     | 
+------+---------+---------+----------+ 
2 rows in set (0.00 sec)

4. LIKE 'X%X': Tìm giá trị bắt đầu bằng "X" và kết thúc bằng "X".

mysql> SELECT * FROM Student WHERE name LIKE 'a%v'; 
+------+-------+---------+---------+ 
| Id   | Name  | Address | Subject | 
+------+-------+---------+---------+ 
| 2    | Aarav | Mumbai  | History | 
+------+-------+---------+---------+ 
1 row in set (0.00 sec)

_ - Dấu gạch dưới

Dùng để khớp đúng một ký tự. Cú pháp:

SELECT ... WHERE column_name LIKE 'X_'

X là mẫu, _ khớp đúng 1 ký tự. _ có thể dùng đơn lẻ hoặc kết hợp với %. Ví dụ:

1. LIKE 'X_': Tìm giá trị bắt đầu bằng "X" và có đúng 1 ký tự sau X.

mysql> SELECT * FROM student WHERE year_of_Admission LIKE '200_'; 
+------+---------+---------+-----------+--------------------+ 
| Id   | Name    | Address | Subject   | year_of_Admission  | 
+------+---------+---------+-----------+--------------------+ 
| 1    | Gaurav  | Delhi   | Computers | 2001               | 
| 15   | Harshit | Delhi   | Commerce  | 2009               | 
| 21   | Yashraj | NULL    | Math      | 2000               | 
+------+---------+---------+-----------+--------------------+ 
3 rows in set (0.00 sec)

2. LIKE '_X': Tìm giá trị kết thúc bằng "X" và có đúng 1 ký tự trước X.

mysql> SELECT * FROM student WHERE year_of_Admission LIKE '_017'; 
+------+--------+---------+-----------+--------------------+ 
| Id   | Name   | Address | Subject   | year_of_Admission  | 
+------+--------+---------+-----------+--------------------+ 
| 20   | Gaurav | Jaipur  | Computers | 2017               | 
+------+--------+---------+-----------+--------------------+ 
1 row in set (0.00 sec)

3. LIKE '_X%': Kết hợp với %. Tìm giá trị có X ở vị trí thứ 2.

mysql> SELECT * FROM student WHERE Name LIKE '_a%'; 
+------+---------+---------+-----------+--------------------+ 
| Id   | Name    | Address | Subject   | year_of_Admission  | 
+------+---------+---------+-----------+--------------------+ 
| 1    | Gaurav  | Delhi   | Computers | 2001               | 
| 2    | Aarav   | Mumbai  | History   | 2010               | 
| 15   | Harshit | Delhi   | Commerce  | 2009               | 
| 20   | Gaurav  | Jaipur  | Computers | 2017               | 
| 21   | Yashraj | NULL    | Math      | 2000               | 
+------+---------+---------+-----------+--------------------+ 
5 rows in set (0.00 sec)

4. LIKE 'X_%_%': Kết hợp với %. Tìm giá trị bắt đầu bằng X và độ dài ít nhất 3 ký tự.

mysql> SELECT * FROM student WHERE Name LIKE 'g_%_%'; 
+------+--------+---------+-----------+--------------------+ 
| Id   | Name   | Address | Subject   | year_of_Admission  | 
+------+--------+---------+-----------+--------------------+ 
| 1    | Gaurav | Delhi   | Computers | 2001               | 
| 20   | Gaurav | Jaipur  | Computers | 2017               | 
+------+--------+---------+-----------+--------------------+ 
2 rows in set (0.00 sec)