MySQL LIKE 子句
我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。
WHERE 子句中可以使用等号 =
来设定获取数据的条件,如 "jianshu_author = 'Fangdm'"。
但是有时候我们需要获取 jianshu_author 字段含有 "Fang" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分号 %
字符来表示任意字符,类似于UNIX或正则表达式中的星号 *
。
如果没有使用百分号 %
, LIKE 子句与等号 =
的效果是一样的。
语法
SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件
- 你可以在 WHERE 子句中指定任何条件。
- 你可以在 WHERE 子句中使用LIKE子句。
- 你可以使用LIKE子句代替等号
=
。 - LIKE 通常与
%
一同使用,类似于一个元字符的搜索。 - 你可以使用 AND 或者 OR 指定一个或多个条件。
- 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。
在命令提示符中使用 LIKE 子句
以下我们将在 SQL SELECT 命令中使用 WHERE...LIKE 子句来从MySQL数据表 mydb_jianshu 中读取数据。
实例
以下是我们将 mydb_jianshu 表中获取 jianshu_author 字段中以 Fang
为开头的所有记录:
mysql> use mydb;
Database changed
mysql> select * from mydb_jianshu where jianshu_author like 'Fang%';
+------------+----------------------------+----------------+-----------------+
| jianshu_id | jianshu_title | jianshu_author | submission_date |
+------------+----------------------------+----------------+-----------------+
| 2 | 学习网络安全从0到1 | Fangdm | 2018-02-09 |
| 3 | MySQL基础 | Fangdm | 2018-02-09 |
+------------+----------------------------+----------------+-----------------+
2 rows in set (0.08 sec)
在PHP脚本中使用 LIKE 子句
实例
以下是我们使用PHP脚本在 mydb_jianshu 表中读取 jianshu_author 字段中以 Fang
为开头的所有记录:
<?php
$dbname = 'mydb';
$servername = 'localhost';
$username = 'root';
$password = '';
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "select * from mydb_jianshu where jianshu_author like 'Fang%';";
// 设置结果集为关联数组
$result = $conn->query("$sql");
$data = $result->fetchAll(PDO::FETCH_ASSOC);
echo "<table border='1'>
<tr>
<td>jianshu_id</td>
<td>jianshu_title</td>
<td>jianshu_author</td>
<td>submission_date</td>
</tr>
";
foreach ($data as $k => $v) {
echo "<tr>";
echo "<td>" . $v['jianshu_id'] . "</td>";
echo "<td>" . $v['jianshu_title'] . "</td>";
echo "<td>" . $v['jianshu_author'] . "</td>";
echo "<td>" . $v['submission_date'] . "</td>";
echo "</tr>";
}
echo "</table>";
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
输出结果: