通配符

通配符可用于替代字符串中的任何其他字符。

1. SQL 通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。

SQL 通配符用于搜索表中的数据。

在 SQL 中,可使用以下通配符:

通配符

描述

%

替代 0 个或多个字符

_

替代一个字符

[charlist]

字符列中的任何单一字符

或 [!charlist]

不在字符列中的任何单一字符

2. 演示数据库

在本教程中,我们将使用 Lintcode 样本数据库。

下面是选自 "student" 表的数据:

+----+----------------+---------------------------+-----+----------+
| id | name           | email                     | age | class_id |
+----+----------------+---------------------------+-----+----------+
|  1 | Sharon Harris  | w.hde@rds.li              |  20 |        1 |
|  2 | Barbara Garcia | e.nnbvfipqeh@hdobycodn.st |  21 |        3 |
|  3 | Shirley Brown  | b.ksfdygd@jpehdkw.net.cn  |  28 |        3 |
|  4 | Anthony Brown  | q.rudpslz@pqvxpyx.org     |  38 |        1 |
|  5 | Gary Lopez     | f.xwpevistkv@szwx.fj      |  38 |        2 |
|  6 | Larry Lopez    | d.lwvxzfi@bpogy.cn        |  21 |        3 |
|  7 | Mark Lopez     | v.coqfyiig@ckccb.bf       |  32 |        2 |
|  8 | Gary Perez     | t.yoffukqvi@qtohpour.td   |  25 |        1 |
| 11 | Mary Harris    | m.mqxcuhwon@ulrprfbji.tk  |  25 |        3 |
| 12 | Lisa Brown     | g.epimkkwxr@rmffcsmgl.mil |  31 |        2 |
+----+----------------+---------------------------+-----+----------+

3. 使用 SQL % 通配符

3.1 % 通配符 实例Ⅰ

下面的 SQL 语句选取 name 以字母 "Sh" 开始的所有学生:

SELECT * FROM student
WHERE name LIKE 'Sh%';

执行输出结果

+----+---------------+--------------------------+-----+----------+
| id | name          | email                    | age | class_id |
+----+---------------+--------------------------+-----+----------+
|  1 | Sharon Harris | w.hde@rds.li             |  20 |        1 |
|  3 | Shirley Brown | b.ksfdygd@jpehdkw.net.cn |  28 |        3 |
+----+---------------+--------------------------+-----+----------+

3.2 % 通配符 实例Ⅱ

下面的 SQL 语句选取 name 中包含 "ry" 的所有学生:

SELECT * FROM student
WHERE name LIKE '%ry%';

执行输出结果

+----+-------------+--------------------------+-----+----------+
| id | name        | email                    | age | class_id |
+----+-------------+--------------------------+-----+----------+
|  5 | Gary Lopez  | f.xwpevistkv@szwx.fj     |  38 |        2 |
|  6 | Larry Lopez | d.lwvxzfi@bpogy.cn       |  21 |        3 |
|  8 | Gary Perez  | t.yoffukqvi@qtohpour.td  |  25 |        1 |
| 11 | Mary Harris | m.mqxcuhwon@ulrprfbji.tk |  25 |        3 |
+----+-------------+--------------------------+-----+----------+

4. 使用 SQL _ 通配符

4.1 _ 通配符 实例Ⅰ

下面的 SQL 语句选取 name(姓名) 以一个任意字符开始,然后是 "ark Lopez" 的所有学生:

SELECT * FROM student
WHERE name LIKE '_ark Lopez';

执行输出结果

+----+------------+---------------------+-----+----------+
| id | name       | email               | age | class_id |
+----+------------+---------------------+-----+----------+
|  7 | Mark Lopez | v.coqfyiig@ckccb.bf |  32 |        2 |
+----+------------+---------------------+-----+----------+

4.2 _ 通配符 实例Ⅱ

下面的 SQL 语句选取 name 以任意两个字符开始,然后是 "ry",然后是任意五个字符,最后以 "z" 结尾的所有学生:

SELECT * FROM student
WHERE name LIKE '__ry_____z';

执行输出结果

+----+------------+-------------------------+-----+----------+
| id | name       | email                   | age | class_id |
+----+------------+-------------------------+-----+----------+
|  5 | Gary Lopez | f.xwpevistkv@szwx.fj    |  38 |        2 |
|  8 | Gary Perez | t.yoffukqvi@qtohpour.td |  25 |        1 |
+----+------------+-------------------------+-----+----------+

5. 使用 SQL [charlist] 通配符

MySQL 中使用 REGEXPNOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

5.1 [charlist] 通配符 实例Ⅰ

下面的 SQL 语句选取 name 以 "G"、"F" 或 "S" 开始的所有学员:

SELECT * FROM student
WHERE name REGEXP '^[GFS]';

执行输出结果

+----+---------------+--------------------------+-----+----------+
| id | name          | email                    | age | class_id |
+----+---------------+--------------------------+-----+----------+
|  1 | Sharon Harris | w.hde@rds.li             |  20 |        1 |
|  3 | Shirley Brown | b.ksfdygd@jpehdkw.net.cn |  28 |        3 |
|  5 | Gary Lopez    | f.xwpevistkv@szwx.fj     |  38 |        2 |
|  8 | Gary Perez    | t.yoffukqvi@qtohpour.td  |  25 |        1 |
+----+---------------+--------------------------+-----+----------+

5.2 [charlist] 通配符 实例Ⅱ

下面的 SQL 语句选取 name 以 A 到 H 字母开头的所有学员:

SELECT * FROM student
WHERE name REGEXP '^[A-H]';

执行输出结果

+----+----------------+---------------------------+-----+----------+
| id | name           | email                     | age | class_id |
+----+----------------+---------------------------+-----+----------+
|  2 | Barbara Garcia | e.nnbvfipqeh@hdobycodn.st |  21 |        3 |
|  4 | Anthony Brown  | q.rudpslz@pqvxpyx.org     |  38 |        1 |
|  5 | Gary Lopez     | f.xwpevistkv@szwx.fj      |  38 |        2 |
|  8 | Gary Perez     | t.yoffukqvi@qtohpour.td   |  25 |        1 |
+----+----------------+---------------------------+-----+----------+

Last updated

Was this helpful?