Trần Ngọc Thanh
- 28
- 19/08/2025
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
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

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 *