(1)任务描述

本关任务:使用通配符 % 检索数据表中指定字段的数据;

(2)相关知识

为了完成本关任务,你需要掌握:如何使用通配符 % 模糊匹配数据内容。

(3)使用通配符%模糊匹配数据内容的后半部分

在所有通配符中,最常用的通配符要数 % 了。使用了 % 就意味着,你能从现有的数据中匹配到任意个数的字符(注意,可以是不止一个字符哟)。

语法规则为:

SELECT 字段名
FROM 表名
WHERE 字段名 LIKE '数据%';

举个例子

数据库如何使用restrict 数据库如何使用百分比_数据库如何使用restrict

输入:

SELECT *
FROM Customers
WHERE cust_name LIKE 'Alice%'

输出:

数据库如何使用restrict 数据库如何使用百分比_字符串_02

检索过程为:

数据库如何使用restrict 数据库如何使用百分比_字符串_03

在这个例子里,我们使用了模糊匹配模式 Alice% ,运行后,数据库会检索出所有以 Alice 为开头的字符串来,无论 Alice 后有多长的字符串数据库都能检索出来。

Tips:

(4)使用通配符%模糊匹配数据内容的任意部分

如果,你想检索的内容既不在字符串的头部,也不在字符串的尾部,而是在它们的中间,你该如何检索呢?

举个例子

数据库如何使用restrict 数据库如何使用百分比_数据库如何使用restrict_04

如果我们还按刚才的方法,看看我们能检索到什么?

输入:

SELECT *
FROM Customers
WHERE cust_email LIKE 'yahoo%'

输出:

数据库如何使用restrict 数据库如何使用百分比_mysql_05

啊哦!什么都没检索到!那是因为, yahoo% 模式严格匹配的是以 yahoo 开头的字符串。而大家可以看到,在我们的例子中,包含 yahoo 字符串的邮箱地址是以不同名字作为字符串开头的。

所以,要想匹配到五花八门的名字,我们需要把它们都变成通配符 % 。

输入:

SELECT *
FROM Customers
WHERE cust_email LIKE '%yahoo%'

输出:

数据库如何使用restrict 数据库如何使用百分比_mysql_06

检索过程为:

数据库如何使用restrict 数据库如何使用百分比_数据库如何使用restrict_07

想象一下,如果你在 cust_email 中检索 a%m ,会得到什么样的结果?

下面轮到你们来试一试了。

(5)编程要求

我们已经为你建好了数据库与数据表,并添加了相应的数据内容。你只需补全右侧代码片段中 retrieving with wildcard % 下 Begin-End 区间的代码,检索表 Products 中所有带 toy 的产品的所有内容。

其中表 Products 的内容如下图所示:

数据库如何使用restrict 数据库如何使用百分比_字符串_08

测试说明

测试过程:

  • 本关涉及到的测试文件是 step1_test.sh ,平台将运行用户补全的 step1.sql 文件,得到数据;
  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

数据库如何使用restrict 数据库如何使用百分比_数据库_09


开始你的任务吧,祝你成功!

实验代码

数据库如何使用restrict 数据库如何使用百分比_字符串_10