MySQL LIKE 子句

  • 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子句可以与DELETEUPDATE SQL命令一起使用,也可以指定条件。
  • 在命令提示符处使用LIKE子句

    这将使用带有WHERE ... LIKE子句的SQL SELECT命令从MySQL表– tutorials_tbl中获取所选数据。
    以下示例将返回tutorials_tbl表中所有记录的作者姓名以jay结尾的记录
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use mydb;
    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()中使用WHERE ... LIKE子句的类似语法。如果WHERE ... LIKE子句与SELECT命令一起使用,则此函数用于执行SQL命令,以及更高版本的另一个PHP函数mysqli_fetch_array()可用于获取所有选定的数据。但是,如果WHERE ... LIKE子句与DELETEUPDATE命令一起使用,则不需要进一步的PHP函数调用。
    尝试以下示例,以从authors_tbl表中返回其作者名称包含jay的所有记录
    <?php
    $dbhost = 'mysql';
    $dbuser = 'test';
    $dbpass = '123456';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    
    if(! $conn ) {
        die('Could not connect: ' . mysqli_error($conn));
    }
    $sql = 'SELECT tutorial_id, tutorial_title, 
          tutorial_author, submission_date
          FROM tutorials_tbl
          WHERE tutorial_author LIKE "%jay%"';
    
    mysqli_select_db($conn,'mydb');
    $retval = mysqli_query( $conn,$sql );
    
    if(! $retval ) {
        die('Could not get data: ' . mysqli_error($conn));
    }
    
    while($row = mysqli_fetch_array($retval, MYSQLI_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";
    mysqli_close($conn);
    ?>
    
    尝试一下