✍️
炼码教程 - SQL 边学边练
  • License
  • 介绍 Introduction
    • 目录 Content
  • Level 1
    • Hello SQL
    • 简单的 SELECT 语句
    • 简单的 INSERT 语句
    • 简单的 UPDATE 语句
    • 简单的 DELETE 语句
  • Level 2
    • 简单的数据库和数据表操作
      • 创建数据库
      • 创建数据表
      • 删除数据表
      • 删除数据库
    • 约束
      • 主键约束
      • 自增长约束
    • 常见数据类型
  • Level 3
    • SELECT进阶
      • WHERE 条件子句
      • ORDER BY 与 LIMIT
      • SELECT DISTINCT
    • Function 函数
      • AVG()
      • COUNT()
      • MAX()
      • MIN()
      • SUM()
      • ROUND()
      • NULL()
  • Level 4
    • Level 4 时间
  • Level 5
    • Level 5 多表单联合
    • 外键
    • 别名
    • 多表联结
      • INNER JOIN
      • LEFT JOIN
      • RIGHT JOIN
      • OUTER JOIN
  • Level 6
    • Level 6 临时表单
    • GROUP BY
    • HAVING
    • 子查询
      • SELECT 语句中的子查询
      • INSERT 语句中的子查询
      • UPDATE 语句中的子查询
      • DELETE 语句中的子查询
      • 多行子查询
      • 多列子查询
      • HAVING 子句中的子查询
      • 内联视图子查询
  • Level 7
    • Level 7 索引
  • Level 8
    • Level 8 事务 Transaction
  • Level 9
    • Level 9 复杂的SQL查询
  • Level MAX
    • Level 10 变量和循环
  • 附录 Appendix
    • 数据类型参考手册
    • 函数 Function
    • 通配符
    • 演示数据库
    • common
    • Bug 001
Powered by GitBook
On this page
  • 1. SQL 通配符
  • 2. 演示数据库
  • 3. 使用 SQL % 通配符
  • 3.1 % 通配符 实例Ⅰ
  • 3.2 % 通配符 实例Ⅱ
  • 4. 使用 SQL _ 通配符
  • 4.1 _ 通配符 实例Ⅰ
  • 4.2 _ 通配符 实例Ⅱ
  • 5. 使用 SQL [charlist] 通配符
  • 5.1 [charlist] 通配符 实例Ⅰ
  • 5.2 [charlist] 通配符 实例Ⅱ

Was this helpful?

  1. 附录 Appendix

通配符

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

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 中使用 REGEXP 或 NOT 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 |
+----+----------------+---------------------------+-----+----------+
Previous函数 FunctionNext演示数据库

Last updated 4 years ago

Was this helpful?