Mệnh đề LIKE trong MariaDB
Trong MariaDB, mệnh đề WHERE
được sử dụng để truy vấn dữ liệu khi cần tìm kiếm một giá trị chính xác. Tuy nhiên, nếu muốn tìm các kết quả có đặc điểm chung, ta có thể sử dụng mệnh đề LIKE
để thực hiện tìm kiếm theo mẫu (pattern matching).

Giới thiệu về mệnh đề LIKE trong MariaDB
Mệnh đề LIKE
giúp kiểm tra một chuỗi có khớp với mẫu nhất định hay không. Câu lệnh sẽ trả về TRUE hoặc FALSE tùy vào kết quả đối chiếu.
Trong LIKE
, ta sử dụng hai ký tự đại diện (wildcard) chính:
%
: Đại diện cho bất kỳ số lượng ký tự nào (bao gồm cả rỗng)- Ví dụ:
'XYZ%'
sẽ khớp với'XYZ Corp'
,'XYZ Technologies'
nhưng không khớp với'ABC XYZ'
.
- Ví dụ:
_
: Đại diện cho một ký tự đơn lẻ- Ví dụ:
'A_B%'
có thể khớp với'A1B Corp'
,'A2B Tech'
, nhưng không khớp với'AB Corporation'
.
- Ví dụ:
Mệnh đề LIKE
trong MariaDB mặc định không phân biệt chữ hoa và chữ thường. Nếu muốn phân biệt chữ hoa - chữ thường, ta cần thiết lập COLLATE utf8_bin hoặc sử dụng BINARY
.
Bài viết này được đăng tại [free tuts .net]
Ngoài ra, MariaDB cũng hỗ trợ NOT LIKE
, giúp truy vấn những kết quả không khớp với mẫu đã cho.
Nếu biểu thức hoặc mẫu so khớp có giá trị NULL
, kết quả trả về cũng sẽ là NULL
.
Cú pháp của mệnh đề LIKE trong MariaDB
SELECT cot1, cot2, ... FROM ten_bang WHERE cot LIKE 'mau_tim_kiem';
Trong đó:
cot
: Cột cần tìm kiếm dữ liệu.'mau_tim_kiem'
: Chuỗi mẫu chứa ký tự đại diện%
hoặc_
.
Sử dụng LIKE trong giao diện dòng lệnh (Command Prompt) trong MariaDB
Ta có thể sử dụng LIKE
trực tiếp trong MariaDB thông qua dòng lệnh như sau:
root@host# mysql -u root -p Enter password:******* mysql> USE TUTORIALS; Database changed mysql> SELECT * FROM products_tbl WHERE product_manufacturer LIKE 'XYZ%';
Kết quả hiển thị:
ID_number | Nomenclature | product_manufacturer |
---|---|---|
12345 | Orbitron 4000 | XYZ Corp |
12346 | Orbitron 3000 | XYZ Corp |
12347 | Orbitron 1000 | XYZ Corp |
⮕ Lệnh trên giúp tìm kiếm tất cả sản phẩm có product_manufacturer
bắt đầu bằng 'XYZ'
.
Sử dụng LIKE trong PHP trong MariaDB
Ví dụ 1: Truy vấn dữ liệu sử dụng LIKE
trong PHP (mysqli)
Để đảm bảo bảo mật và hiệu suất, ta nên sử dụng mysqli
thay vì mysql_query()
(đã lỗi thời).
<?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'rootpassword'; $dbname = 'PRODUCTS'; // Kết nối đến cơ sở dữ liệu $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname); // Kiểm tra kết nối if ($conn->connect_error) { die("Kết nối thất bại: " . $conn->connect_error); } // Câu lệnh SELECT sử dụng LIKE $sql = "SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer LIKE 'XYZ%'"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "Product ID: " . $row['product_id'] . "<br>"; echo "Tên sản phẩm: " . $row['product_name'] . "<br>"; echo "Nhà sản xuất: " . $row['product_manufacturer'] . "<br>"; echo "Ngày giao hàng: " . $row['ship_date'] . "<br>"; echo "--------------------------------<br>"; } } else { echo "Không tìm thấy kết quả."; } // Đóng kết nối $conn->close(); ?>
Kết quả hiển thị trên trình duyệt:
Product ID: 12345 Tên sản phẩm: Orbitron 4000 Nhà sản xuất: XYZ Corp Ngày giao hàng: 01/01/17 -------------------------------- Product ID: 12346 Tên sản phẩm: Orbitron 3000 Nhà sản xuất: XYZ Corp Ngày giao hàng: 01/02/17 -------------------------------- Product ID: 12347 Tên sản phẩm: Orbitron 1000 Nhà sản xuất: XYZ Corp Ngày giao hàng: 01/02/17 --------------------------------
Một số ví dụ nâng cao về LIKE trong
Tìm kiếm tất cả sản phẩm có chứa chữ 'Tech' trong tên nhà sản xuất
SELECT * FROM products_tbl WHERE product_manufacturer LIKE '%Tech%';
⮕ Kết quả sẽ bao gồm:
"ABC Technologies"
"XYZ Tech Corp"
Tìm tất cả sản phẩm có nhà sản xuất bắt đầu bằng 'A' và có đúng 5 ký tự
SELECT * FROM products_tbl WHERE product_manufacturer LIKE 'A____';
⮕ Kết quả sẽ bao gồm những giá trị có 5 ký tự bắt đầu bằng "A"
, ví dụ:
"Apple"
"Acer_"
Tìm kiếm tất cả sản phẩm KHÔNG có nhà sản xuất bắt đầu bằng 'XYZ'
SELECT * FROM products_tbl WHERE product_manufacturer NOT LIKE 'XYZ%';
⮕ Loại bỏ những nhà sản xuất có tên bắt đầu bằng "XYZ"
khỏi kết quả.
Kết bài
- LIKE là công cụ hữu ích khi cần tìm kiếm dữ liệu không cố định trong MariaDB.
- Ký tự
%
giúp tìm kiếm nhiều ký tự bất kỳ. - Ký tự
_
giúp tìm kiếm chính xác một ký tự bất kỳ. - MariaDB mặc định không phân biệt chữ hoa - chữ thường khi sử dụng LIKE.
- Khi lập trình với PHP, nên sử dụng
mysqli
hoặcPDO
thay vìmysql_query()
để đảm bảo an toàn dữ liệu.
Hiểu và sử dụng tốt mệnh đề LIKE
giúp bạn tối ưu hóa truy vấn, tìm kiếm dữ liệu chính xác hơn trong cơ sở dữ liệu MariaDB.