MySQL - Mệnh đề LIKE

Chúng tôi đã thấy SQL SELECTlệnh để tìm nạp dữ liệu từ bảng MySQL. Chúng ta cũng có thể sử dụng một mệnh đề điều kiện được gọi làWHERE mệnh đề để chọn các bản ghi cần thiết.

Mệnh đề WHERE với dấu 'bằng với' (=) hoạt động tốt khi chúng ta muốn so khớp chính xác. Giống như nếu "tutorial_author = 'Sanjay'". Nhưng có thể có một yêu cầu trong đó chúng tôi muốn lọc ra tất cả các kết quả mà tên tutorial_author phải chứa "jay". Điều này có thể được xử lý bằng cách sử dụngSQL LIKE Clause cùng với mệnh đề WHERE.

Nếu mệnh đề SQL LIKE được sử dụng cùng với ký tự%, thì nó sẽ hoạt động giống như một ký tự meta (*) như trong UNIX, đồng thời liệt kê tất cả các tệp hoặc thư mục tại dấu nhắc lệnh. Không có ký tự%, mệnh đề LIKE rất giống vớiequal to ký cùng với mệnh đề WHERE.

Cú pháp

Khối mã sau có cú pháp SQL chung của lệnh SELECT cùng với mệnh đề LIKE để tìm nạp dữ liệu từ bảng MySQL.

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Bạn có thể chỉ định bất kỳ điều kiện nào bằ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 equals to ký tên.

  • Khi LIKE được sử dụng cùng với dấu% thì nó sẽ hoạt động giống như tìm kiếm ký tự meta.

  • Bạn có thể chỉ định nhiều hơn một điều kiện bằng cách sử dụng AND hoặc là OR các toán tử.

  • Mệnh đề WHERE ... LIKE có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE SQL để chỉ định một điều kiện.

Sử dụng mệnh đề LIKE trong Command Prompt

Điều này sẽ sử dụng lệnh SQL SELECT với mệnh đề WHERE ... LIKE để tìm nạp dữ liệu đã chọn từ bảng MySQL - tutorials_tbl.

Thí dụ

Ví dụ sau sẽ trả về tất cả các bản ghi từ tutorials_tbl bảng mà tên tác giả kết thúc bằng jay -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
   -> WHERE tutorial_author LIKE '%jay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|      3      |  JAVA Tutorial |     Sanjay      |    2007-05-21   |   
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>

Sử dụng mệnh đề LIKE bên trong PHP Script

Bạn có thể sử dụng cú pháp tương tự của mệnh đề WHERE ... LIKE vào hàm PHP - mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó là một hàm PHP khác -mysql_fetch_array() có thể được sử dụng để tìm nạp tất cả 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ì không cần gọi thêm hàm PHP.

Thí dụ

Hãy thử ví dụ sau để trả về tất cả các bản ghi từ tutorials_tbl bảng chứa tên tác giả jay -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title, 
      tutorial_author, submission_date
      FROM tutorials_tbl
      WHERE tutorial_author LIKE "%jay%"';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>