Toán tử LIKE trong MySQL

Toán tử LIKE trong MySQL
Toán tử LIKE trong MySQL

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ự %_ 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
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Toán tử LIKE trong MySQL
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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !