Toán tử LIKE trong MySQL
Trần Thị Vân
- 1172
- 14/08/2025
Chức năng của Toán tử LIKE trong MySQL
Toán tử LIKE trong MySQL được sử dụng trong mệnh để WHERE, nếu vị trí trong cột chứa chuỗi ký tự đưa vào thì hàng đó sẽ thỏa điều kiện.
Code Toán tử LIKE trong MySQL
Toán tử LIKE chứa từ khóa trong MySQL
Kiểm tra hàng nào có cột tên chứa từ khóa "Micro":
select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like '%Micro%';
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'IhNRcn9n'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ten like '%Micro%'
echo "<b>ten like '%Micro%'</b><br>";
$sql ="select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like '%Micro%'";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
echo "ID: {$row['id']} <br> ".
"ID Cha cấp một: {$row['id_cha1']} <br> ".
"Hiển thị: {$row['hienthi']} <br> ".
"Tên sản phẩm: {$row['ten']} <br> ".
"Giá : {$row['gia']} <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ten like '%Micro%'
ID: 6
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: Micro Shure SM58-LC
Giá : 2700000
--------------------------------
ID: 7
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: Micro AKG D7 S
Giá : 3400000
--------------------------------
ID: 10
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: AKG Micro D7 S
Giá : 3400000
--------------------------------
Toán tử LIKE chứa từ khóa đầu câu trong MySQL
Kiểm tra hàng nào có cột tên chứa từ khóa "Micro" ở đầu câu:
select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like 'Micro%';
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'IhNRcn9n'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ten like 'Micro%'
echo "<b>ten like 'Micro%'</b><br>";
$sql ="select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like 'Micro%'";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
echo "ID: {$row['id']} <br> ".
"ID Cha cấp một: {$row['id_cha1']} <br> ".
"Hiển thị: {$row['hienthi']} <br> ".
"Tên sản phẩm: {$row['ten']} <br> ".
"Giá : {$row['gia']} <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ten like 'Micro%'
ID: 6
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: Micro Shure SM58-LC
Giá : 2700000
--------------------------------
ID: 7
ID Cha cấp một: 2
Hiển thị: 1
Tên sản phẩm: Micro AKG D7 S
Giá : 3400000
--------------------------------
Toán tử LIKE chứa từ khóa cuối câu trong MySQL
Kiểm tra hàng nào có cột tên chứa từ khóa "AV02" ở cuối câu:
select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like '%AV02';
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'IhNRcn9n'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ten like '%AV02'
echo "<b>ten like '%AV02'</b><br>";
$sql ="select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like '%AV02'";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
echo "ID: {$row['id']} <br> ".
"ID Cha cấp một: {$row['id_cha1']} <br> ".
"Hiển thị: {$row['hienthi']} <br> ".
"Tên sản phẩm: {$row['ten']} <br> ".
"Giá : {$row['gia']} <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ten like '%AV02'
ID: 4
ID Cha cấp một: 1
Hiển thị: 1
Tên sản phẩm: Dàn âm thanh nghe nhạc AV02
Giá : 30000000
--------------------------------
Toán tử LIKE bằng trong MySQL
Kiểm tra hàng nào có cột tên bằng với từ khóa hay không (giống nhau 100% chứ không phải chứa):
select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like 'Dàn âm thanh nghe nhạc AV01';
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'IhNRcn9n'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ten like 'Dàn âm thanh nghe nhạc AV01'
echo "<b>ten like 'Dàn âm thanh nghe nhạc AV01'</b><br>";
$sql ="select hienthi,ten,id,gia,id_cha1 from tb_sanpham where hienthi=1 and ten like 'Dàn âm thanh nghe nhạc AV01'";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
echo "ID: {$row['id']} <br> ".
"ID Cha cấp một: {$row['id_cha1']} <br> ".
"Hiển thị: {$row['hienthi']} <br> ".
"Tên sản phẩm: {$row['ten']} <br> ".
"Giá : {$row['gia']} <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ten like 'Dàn âm thanh nghe nhạc AV01'
ID: 3
ID Cha cấp một: 1
Hiển thị: 1
Tên sản phẩm: Dàn âm thanh nghe nhạc AV01
Giá : 25000000
--------------------------------
Những lưu ý khi sử dụng Toán tử LIKE trong MySQL
Cách dùng ký tự % và _ trong Toán tử LIKE
Hai ký tự % và _ quyết định cách MySQL tìm kiếm dữ liệu với LIKE. Ký tự % đại diện cho một chuỗi có thể chứa không, một hoặc nhiều ký tự, trong khi _ chỉ đại diện cho đúng một ký tự.
Ví dụ, điều kiện LIKE 'Ng%' có thể tìm thấy các giá trị bắt đầu bằng “Ng”, còn LIKE 'Ng_' chỉ phù hợp với những giá trị có tổng cộng ba ký tự và hai ký tự đầu là “Ng”.
SELECT * FROM users
WHERE name LIKE 'Ng%';
SELECT * FROM users
WHERE name LIKE 'Ng_';
Khi cần tìm chính ký tự % hoặc _ trong dữ liệu, cần xử lý ký tự đặc biệt này bằng ký tự escape để MySQL không hiểu chúng là ký tự đại diện.
LIKE ảnh hưởng đến hiệu suất truy vấn như thế nào?
Với bảng có ít dữ liệu, LIKE thường không tạo ra khác biệt đáng kể. Tuy nhiên, khi bảng chứa hàng trăm nghìn hoặc hàng triệu bản ghi, cách đặt mẫu tìm kiếm có thể ảnh hưởng rõ rệt đến thời gian truy vấn.
Mẫu tìm kiếm bắt đầu bằng một chuỗi cố định như 'web%' có nhiều cơ hội tận dụng chỉ mục phù hợp. Ngược lại, mẫu bắt đầu bằng '%web' hoặc '%web%' thường khiến MySQL phải kiểm tra nhiều giá trị hơn vì không xác định được phần đầu cần tìm.
-- Có thể tối ưu tốt hơn khi cột được lập chỉ mục
SELECT * FROM users
WHERE name LIKE 'Ng%';
-- Có thể phải kiểm tra nhiều dữ liệu hơn
SELECT * FROM users
WHERE name LIKE '%Ng%';
Vì vậy, với dữ liệu lớn, không nên lạm dụng LIKE '%từ khóa%' cho các chức năng tìm kiếm thường xuyên. Nếu yêu cầu tìm kiếm phức tạp hoặc cần tìm trong lượng dữ liệu lớn, có thể cân nhắc giải pháp tìm kiếm phù hợp hơn thay vì chỉ dựa vào LIKE.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Toán tử LIKE trong MySQL.
Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *