Công ty thiết kế website chuẩn SEO Web Mới
Tìm kiếm
Công ty thiết kế website chuẩn SEO Web Mới

Toán tử REGEXP trong MySQL

Toán tử REGEXP trong MySQL dùng để kiểm tra một chuỗi có chứa các ký tự ở nhiều vị trí hay không hoặc có đúng cấu trúc cần lấy hay không, chi tiết như nào hãy cùng chúng tôi phân tích:

Toán tử REGEXP trong MySQL

Toán tử REGEXP trong MySQL

Chức năng của Toán tử REGEXP trong MySQL

Toán tử REGEXP trong MySQL dùng để kiểm tra một chuỗi có chứa các ký tự ở nhiều vị trí hay không hoặc có đúng cấu trúc cần lấy hay không.

Các biểu thức của toán tử REGEXP trong MySQL

Biểu thức Chức năng
^ Tìm chuỗi có vị trí đầu chuỗi khớp với từ khóa
$ Tìm chuỗi có vị trí cuối chuỗi khớp với từ khóa
. Khớp với bất kỳ ký tự nào
* Khớp với 0 ký tự đứng trước nó hoặc khớp với bất ký ký tự đứng trước nó
bt1|bt2|bt3 Tìm chuỗi thỏa điều kiện của biểu thức 1 hoặc thỏa điều kiện biểu thức 2 hoặc thỏa điều kiện biểu thức 3
[....] Khớp với bất kỳ ký tự nào nằm trong dấu ngoặc vuông.
{n} Quy định số ký tự được thể hiện của phần tử ở trước
+ Khớp với một hoặc nhiều ký tự đứng trước nó

Code các biểu thức của toán tử REGEXP trong MySQL

Biểu thức ^ trong toán tử REGEXP

Dùng để tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa cần tìm.

Ví dụ: Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức ^ trong toán tử REGEXP
   // Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd
   echo "<b>Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd</b><br>";
   $sql = "select ten,msnv from tb_nhanvien where msnv REGEXP '^pkd'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd
ten: Trần Thị Vân
msnv : pkd0609nu
--------------------------------
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
--------------------------------

Biểu thức $ trong toán tử REGEXP

Ví dụ: Tìm kiếm chuỗi có vị trí cuối chuỗi khớp với từ khóa nu

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức $ trong toán tử REGEXP
   // Tìm kiếm chuỗi có vị trí cuối chuỗi khớp với từ khóa nu
   echo "<b>Tìm kiếm chuỗi có vị trí cuối chuỗi khớp với từ khóa nu</b><br>";
   $sql = "select ten,msnv from tb_nhanvien where msnv REGEXP 'nu$'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có vị trí cuối chuỗi khớp với từ khóa nu
ten: Trần Thị Vân
msnv : pkd0609nu
--------------------------------
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
--------------------------------

Biểu thức * kết hợp . trong toán tử REGEXP

Ví dụ: Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd và vị trí cuối chuỗi khớp với từ khóa nu, ví trị giữa chuỗi khớp với bất kỳ ký tự nào

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức * kết hợp . trong toán tử REGEXP
   // Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd và vị trí cuối chuỗi khớp với từ khóa nu, ví trị giữa chuỗi khớp với bất kỳ ký tự nào
   echo "<b>Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd và vị trí cuối chuỗi khớp với từ khóa nu, ví trị giữa chuỗi khớp với bất kỳ ký tự nào</b><br>";
   $sql = "select ten,msnv from tb_nhanvien where msnv REGEXP '^pkd.*nu$'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd và vị trí cuối chuỗi khớp với từ khóa nu, ví trị giữa chuỗi khớp với bất kỳ ký tự nào
ten: Trần Thị Vân
msnv : pkd0609nu
--------------------------------
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
--------------------------------

Biểu thức | trong toán tử REGEXP

Ví dụ: Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd hoặc vị trí cuối chuỗi khớp với từ khóa nam

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức | trong toán tử REGEXP
   // Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd hoặc vị trí cuối chuỗi khớp với từ khóa nam
   echo "<b>Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd hoặc vị trí cuối chuỗi khớp với từ khóa nam</b><br>";
   $sql = "select ten,msnv from tb_nhanvien where msnv REGEXP '^pkd|nam$'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có vị trí đầu chuỗi khớp với từ khóa pkd hoặc vị trí cuối chuỗi khớp với từ khóa nam
ten: Trần Thị Vân
msnv : pkd0609nu
--------------------------------
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
--------------------------------
ten: Bùi Tấn Lực
msnv : pkt2702nam
--------------------------------

Biểu thức [...] kết hợp {n} trong toán tử REGEXP

Ví dụ: Tìm kiếm chuỗi có cấu trúc nnnn-nnn-nnn

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức [...] kết hợp {n} trong toán tử REGEXP
   // Tìm kiếm chuỗi có cấu trúc nnnn-nnn-nnn
   echo "<b>Tìm kiếm chuỗi có cấu trúc nnnn-nnn-nnn</b><br>";
   $sql = "select sodienthoai,ten,msnv from tb_nhanvien where sodienthoai REGEXP '[0-9]{4}-[0-9]{3}-[0-9]{3}'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "sodienthoai : {$row['sodienthoai']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có cấu trúc nnnn-nnn-nnn
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
sodienthoai : 0398-200-200
--------------------------------
ten: Bùi Tấn Lực
msnv : pkt2702nam
sodienthoai : 0398-259-259
--------------------------------

Biểu thức [...] trong toán tử REGEXP

Biểu thức này dùng để kiểm tra một cột có chứa những ký tự trong dấu ngoặc vuông không, mỗi ký tự trong dấu ngoặc vuông đều độc lập.

Ví dụ: Tìm kiếm chuỗi có ký tự u

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức [...] trong toán tử REGEXP
   // Tìm kiếm chuỗi có ký tự u
   echo "<b>Tìm kiếm chuỗi có ký tự u</b><br>";
   $sql = "select sodienthoai,ten,msnv from tb_nhanvien where msnv REGEXP '[u]'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "sodienthoai : {$row['sodienthoai']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có cấu trúc nnnn-nnn-nnn
ten: Trần Thị Vân
msnv : pkd0609nu
sodienthoai : 039-333-4444
--------------------------------
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
sodienthoai : 0398-200-200
--------------------------------

Biểu thức + trong toán tử REGEXP

Ví dụ: Tìm kiếm chuỗi có chứa 1 trong các ký tự ua

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // 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"');
   // Biểu thức + trong toán tử REGEXP
   // Tìm kiếm chuỗi có chứa 1 trong các ký tự ua
   echo "<b>Tìm kiếm chuỗi có chứa 1 trong các ký tự ua</b><br>";
   $sql = "select sodienthoai,ten,msnv from tb_nhanvien where msnv REGEXP '[ua+]'";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo "ten: {$row['ten']} <br> ".
         "msnv : {$row['msnv']} <br> ".
         "sodienthoai : {$row['sodienthoai']} <br> ".
         "--------------------------------<br>";
   }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Tìm kiếm chuỗi có chứa 1 trong các ký tự ua
ten: Trần Thị Vân
msnv : pkd0609nu
sodienthoai : 039-333-4444
--------------------------------
ten: Nguyễn Thùy Dung
msnv : pkd2910nu
sodienthoai : 0398-200-200
--------------------------------
ten: Bùi Tấn Lực
msnv : pkt2702nam
sodienthoai : 0398-259-259
--------------------------------

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Toán tử REGEXP 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
Content Trần Ngọc Thanh
Trần Ngọc Thanh
Content Trần Ngọc Thanh là người viết content có kinh nghiệm nhiều năm tại Web Mới, chuyên viết content bên lĩnh vực website và nhiều lĩnh vực khác
Chia sẻ nội dung đánh giá của bạn về Toán tử REGEXP 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
Đăng ký tư vấn miễn phí
Tìm hiểu 1 năm không bằng lắng nghe 1 câu tư vấn
Kiến thức PHP
Kiến thức về website
Kiến thức SEO website
0398.259.259