MySQLi - LIKE子句



我們已經瞭解了使用SQL SELECT 命令從MySQL表中獲取資料的知識。我們也可以使用稱為WHERE 子句的條件子句來選擇所需記錄。

當我們需要進行精確匹配時,帶有“等於”號(=)的WHERE子句效果很好,例如“tutorial_author = 'Sanjay'”。但是,我們可能需要篩選出所有tutorial_author名稱包含“jay”的結果。這可以使用SQL LIKE子句結合WHERE子句來處理。

如果SQL LIKE子句與%字元一起使用,則它在列出命令提示符下所有檔案或目錄時,將像UNIX中的萬用字元(*)一樣工作。如果沒有%字元,則LIKE子句與WHERE子句一起使用的“等於”號完全相同。

語法

以下程式碼塊包含SELECT命令以及LIKE子句的通用SQL語法,用於從MySQL表中獲取資料。

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • 您可以使用WHERE子句指定任何條件。

  • 您可以將LIKE子句與WHERE子句一起使用。

  • 您可以使用LIKE子句代替等於號。

  • 當LIKE與%符號一起使用時,它將像元字元搜尋一樣工作。

  • 您可以使用ANDOR運算子指定多個條件。

  • WHERE...LIKE子句也可以與DELETE或UPDATE SQL命令一起使用以指定條件。

在命令提示符下使用LIKE子句

這將使用帶有WHERE...LIKE子句的SQL SELECT命令從MySQL表tutorials_tbl中獲取選定的資料。

示例

以下示例將返回tutorials_tbl表中所有作者名稱以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>

在PHP指令碼中使用LIKE子句

PHP使用mysqli_query()mysql_query()函式使用LIKE子句在MySQL表中選擇記錄。此函式採用兩個引數,成功時返回TRUE,失敗時返回FALSE。

語法

$mysqli→query($sql,$resultmode)

序號 引數和說明
1

$sql

必需 - 使用LIKE子句在MySQL表中選擇記錄的SQL查詢。

2

$resultmode

可選 - 常量MYSQLI_USE_RESULT或MYSQLI_STORE_RESULT,取決於所需的行為。預設情況下,使用MYSQLI_STORE_RESULT。

示例

嘗試以下示例,使用LIKE子句在表中選擇記錄:

複製並貼上以下示例作為mysql_example.php:

<html>
   <head>
      <title>Using Like Clause</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli→connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli→connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
   
         $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl where tutorial_author like "Mah%"';
		 
         $result = $mysqli→query($sql);
           
         if ($result→num_rows > 0) {
            while($row = $result→fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli→close();
      ?>
   </body>
</html>

輸出

訪問部署在Apache Web伺服器上的mysql_example.php並驗證輸出。在執行選擇指令碼之前,我們在表中輸入了多條記錄。

Connected successfully.
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
廣告
© . All rights reserved.