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 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 truong1, truong2,...truongN FROM ten_bang
WHERE truong1 LIKE dieuKien [AND [OR]] truong2 = 'giaTri'

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:

Bình luận