MySQL LIKE子句


我们已经看过SQLSELECT命令从MySQL表中获取数据。我们还可以使用称为WHERE子句以选择所需的记录。

在我们要进行完全匹配的地方,带有“等于”号(=)的WHERE子句可以很好地工作。就像“ newbiego_author ='Sanjay'”一样。但是在某些情况下可能需要过滤掉所有结果,其中newbiego_author名称应包含“ jay”。可以使用以下方法处理SQL LIKE子句以及WHERE子句。

如果将SQL LIKE子句与%字符一起使用,则它将在UNIX中像元字符(*)一样工作,同时在命令提示符下列出所有文件或目录。如果没有%字符,则LIKE子句与equal to和WHERE子句一起签名。

语法

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

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

  • 可以将LIKE子句与WHERE子句一起使用。

  • 可以使用LIKE子句代替equals to.

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

  • 可以使用以下条件指定多个条件AND或者OR

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

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


这将使用带有WHERE ... LIKE子句的SQL SELECT命令从MySQL表中获取所选数据–newbiego_tbl.

以下示例将返回的所有记录newbiego_tbl作者名以其结尾的表jay

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

mysql>

在PHP脚本中使用LIKE子句


你可以在PHP函数中使用WHERE ... LIKE子句的类似语法–mysql_query()。此函数用于执行SQL命令,以及更高版本的另一个PHP函数–mysql_fetch_array()如果WHERE ... LIKE子句与SELECT命令一起使用,则可用于获取所有选定的数据。

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

尝试使用以下示例,从中返回所有记录。newbiego_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 newbiego_id, newbiego_title,
        newbiego_author, submission_date
        FROM newbiego_tbl
        WHERE newbiego_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['newbiego_id']}  <br> ".
            "Title: {$row['newbiego_title']} <br> ".
            "Author: {$row['newbiego_author']} <br> ".
            "Submission Date : {$row['submission_date']} <br> ".
            "--------------------------------<br>";
    }
    echo "Fetched data successfully\n";
    mysql_close($conn);
?>