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); ?>