MySQL - LIKE子句

我们已经看到SQL SELECT 命令从MySQL表中获取数据.我们还可以使用一个名为 WHERE 子句的条件子句来选择所需的记录.

带有'等于'符号(=)的WHERE子句有效我们想要完全匹配的地方很好.就像"tutorial_author ='Sanjay'"一样.但是可能需要我们想要过滤掉tutorial_author名称应该包含"jay"的所有结果.这可以使用 SQL LIKE子句和WHERE子句来处理.

如果SQL LIKE子句与%字符一起使用,那么它将像UNIX中的元字符(*),同时在命令提示符下列出所有文件或目录.如果没有%字符,则LIKE子句与等于符号以及WHERE子句非常相似.

语法

以下代码块具有SELECT命令的通用SQL语法以及用于从MySQL表中获取数据的LIKE子句.

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

  • 您可以使用WHERE子句指定任何条件.

  • 您可以使用LIKE子句以及WHERE子句.

  • 您可以使用LIKE子句代替等于符号.

  • 当LIKE与%符号一起使用时,它将像元字符搜索一样工作.

  • 你可以使用 AND OR 运算符指定多个条件.

  • A 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子句

您可以使用类似WHERE ... LIKE子句的语法PHP函数 -   mysql_query().此函数用于执行SQL命令,如果WHERE ... LIKE子句与SELECT命令一起使用,则可以使用另一个PHP函数 -   mysql_fetch_array()来获取所有选定的数据.

但是如果WHERE ... LIKE子句与DELETE或UPDATE命令一起使用,则不需要进一步的PHP函数调用.

示例

尝试以下示例以返回 tutorials_tbl 表中的作者姓名包含 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);
?>