Mệnh đề LIKE trong MySQL
Trong các chương trước, bạn đã thấy cách sử dụng lệnh SELECT trong SQL để lấy dữ liệu từ bảng MySQL. Bạn cũng đã hiểu cách sử dụng một mệnh đề điều kiện WHERE để chọn các bản ghi cần thiết.
Mệnh đề WHERE với dấu bằng (=) làm việc khá khéo léo khi chúng ta muốn thực hiện một so khớp chính xác. Giống lệnh if "ho = 'Nguyen'". Nhưng có thể bạn muốn lọc tất cả kết quả mà trong ho chứa "nguyen". Việc này có thể được xử lý bởi sử dụng mệnh đề LIKE đi cùng với mệnh đề WHERE.
Nếu mệnh đề LIKE trong SQL được sử dụng với các ký tự %, thì nó làm việc giống như một siêu ký tự (*) trong UNIX trong khi liệt kê tất cả các file hoặc thư mục tại dòng nhắc lệnh.
Khi không sử dụng ký tự %, mệnh đề LIKE là giống như dấu bằng đi cùng với mệnh đề WHERE.
Cú pháp
Cú pháp SQL chung của lệnh SELECT đi cùng với mệnh đề LIKE để lấy dữ liệu từ bảng MySQL là:
SELECT truong1, truong2,...truongN FROM ten_bang WHERE truong1 LIKE dieuKien [AND [OR]] truong2 = 'giaTri'
Bạn có thể xác định bất kỳ điều kiện nào bởi sử dụng mệnh đề WHERE.
Bạn có thể sử dụng mệnh đề LIKE cùng với mệnh đề WHERE.
Bạn có thể sử dụng mệnh đề LIKE thay cho dấu bằng.
Khi LIKE được sử dụng cùng với ký hiệu % thì nó làm việc giống như một siêu ký tự *.
Bạn có thể xác định nhiều hơn một điều kiện bởi sử dụng các toán tử AND hoặc OR.
Một mệnh đề WHERE…LIKE có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE trong SQL để xác định một điều kiện.
Sử dụng mệnh đề LIKE trong MySQL
Để lấy dữ liệu đã được lựa chọn từ bảng MySQL, bạn có thể sử dụng lệnh SELECT với mệnh đề WHERE…LIKE.
Ví dụ
Ví dụ sau trả về tất cả bản ghi từ bảng sinhvienk60 có ho bắt đầu với từ Nguyen:
SELECT * FROM sinhvienk60 WHERE ho LIKE 'Nguyen%';
Kết quả là:
Sử dụng mệnh đề LIKE bên trong PHP Script
Bạn dùng cú pháp tương tự của mệnh đề WHERE…LIKE trong hàm PHP là mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy dữ liệu đã chọn nếu mệnh đề WHERE…LIKE được sử dụng cùng với lệnh SELECT.
Nhưng nếu mệnh đề WHERE…LIKE đang được sử dụng với lệnh DELETE hoặc UPDATE thì lời gọi hàm PHP là không cần thiết.
Ví dụ
Bạn thử ví dụ sau để trả về tất cả bản ghi từ bảng sinhvienk60 có ho bắt đầu với từ Nguyen:
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = '123456'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Khong the ket noi: ' . mysql_error()); } $sql = 'SELECT mssv, ho, ten, diemthi FROM sinhvienk60 WHERE ho LIKE "Nguyen%"'; mysql_select_db('sinhvien'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Khong the lay du lieu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "MSSV :{$row['mssv']} <br> ". "Ho : {$row['ho']} <br> ". "Ten : {$row['ten']} <br> ". "Diem Thi : {$row['diemthi']} <br> ". "--------------------------------<br>"; } echo "Lay du lieu thanh cong\n"; mysql_close($conn); ?>
Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là like.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/like.php sẽ cho kết quả như sau:
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học MySQL phổ biến khác tại VietJack: