MySQL LIKE 子句

LIKE 子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配的关键字。它通常与通配符一起使用,用于搜索符合某种模式的字符串

LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *

如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的

使用 LIKE 子句从数据表中读取数据,语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

参数说明:

  • column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列
  • table_name 是你要从中查询数据的表的名称
  • column_name 是你要应用 LIKE 子句的列的名称
  • pattern 是用于匹配的模式,可以包含通配符

更多说明:

  • 你可以在 WHERE 子句中指定任何条件
  • 你可以在 WHERE 子句中使用LIKE子句
  • 你可以使用LIKE子句代替等号 =
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索
  • 你可以使用 AND 或者 OR 指定一个或多个条件
  • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件

以下示例在之前创建的RoboMaster数据库下进行操作

当前数据库数据

mysql> SELECT * FROM Username;
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.01 sec)

1. 百分号通配符 %:

% 通配符表示零个或多个字符。例如,'s%' 匹配以字母 's' 开头的任何字符串。

SELECT * FROM username WHERE username LIKE 's%';

结果:

mysql> SELECT * FROM username WHERE username LIKE 's%';
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)
  1. 下划线通配符 _:

_ 通配符表示一个字符。例如,'_s%' 匹配第二个字母为 's' 的任何字符串

SELECT * FROM username WHERE username LIKE '__e%';

结果:

mysql> SELECT * FROM username WHERE username LIKE '__e%';
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)

3. 组合使用 % 和 _:

SELECT * FROM username WHERE username LIKE 's%i_';

以上 SQL 语句将匹配以字母 's' 开头,然后是零个或多个字符,接着是 'i',最后是一个任意字符的字符串,如 'steins_xin'、's_xin'

结果:

mysql> SELECT * FROM username WHERE username LIKE 's%i_';
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)

results matching ""

    No results matching ""